Condividi tramite


SqlTransaction Classe

Definizione

Rappresenta una transazione Transact-SQL da eseguire in un database SQL Server. La classe non può essere ereditata.

public ref class SqlTransaction sealed : System::Data::Common::DbTransaction
public sealed class SqlTransaction : System.Data.Common.DbTransaction
type SqlTransaction = class
    inherit DbTransaction
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
Ereditarietà
SqlTransaction

Esempio

Nell'esempio seguente viene creato un oggetto SqlConnection e un oggetto SqlTransaction. Viene inoltre illustrato come usare i BeginTransactionmetodi , Commite Rollback . Viene eseguito il rollback della transazione in caso di errore o se viene eliminato senza prima essere sottoposto a commit. Try/Catch La gestione degli errori viene usata per gestire eventuali errori durante il tentativo di eseguire il commit o il rollback della transazione.

using Microsoft.Data.SqlClient;

namespace Transaction1CS
{
    class Program
    {
        static void Main()
        {
            string connectionString =
                "Persist Security Info=False;Integrated Security=SSPI;database=Northwind;server=(local)";
            ExecuteSqlTransaction(connectionString);
            Console.ReadLine();
        }
        private static void ExecuteSqlTransaction(string connectionString)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                SqlCommand command = connection.CreateCommand();
                SqlTransaction transaction;

                // Start a local transaction.
                transaction = connection.BeginTransaction();

                // Must assign both transaction object and connection
                // to Command object for a pending local transaction
                command.Connection = connection;
                command.Transaction = transaction;

                try
                {
                    command.CommandText =
                        "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
                    command.ExecuteNonQuery();
                    command.CommandText =
                        "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
                    command.ExecuteNonQuery();

                    // Attempt to commit the transaction.
                    transaction.Commit();
                    Console.WriteLine("Both records are written to database.");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
                    Console.WriteLine("  Message: {0}", ex.Message);

                    // Attempt to roll back the transaction.
                    try
                    {
                        transaction.Rollback();
                    }
                    catch (Exception ex2)
                    {
                        // This catch block will handle any errors that may have occurred
                        // on the server that would cause the rollback to fail, such as
                        // a closed connection.
                        Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                        Console.WriteLine("  Message: {0}", ex2.Message);
                    }
                }
            }
        }
    }
}

Commenti

L'applicazione crea un SqlTransaction oggetto chiamando BeginTransaction sull'oggetto SqlConnection . Tutte le operazioni successive associate alla transazione , ad esempio il commit o l'interruzione della transazione, vengono eseguite sull'oggetto SqlTransaction .

Nota

Try/Catch La gestione delle eccezioni deve essere sempre usata durante il commit o il rollback di un oggetto SqlTransaction. Sia Commit che Rollback generano un InvalidOperationException valore se la connessione viene terminata o se è già stato eseguito il rollback della transazione nel server.

Per altre informazioni sulle transazioni SQL Server, vedere Transazioni esplicite e codifica di transazioni efficienti.

Proprietà

Connection

Ottiene l'oggetto SqlConnection associato alla transazione o null se la transazione non è più valida.

IsolationLevel

Specifica l'oggetto IsolationLevel per questa transazione.

Metodi

Commit()

Esegue il commit della transazione di database.

Rollback()

Esegue il rollback di una transazione da uno stato in sospeso.

Rollback(String)

Esegue il rollback di una transazione da uno stato in sospeso e specifica la transazione o il nome del punto di salvataggio.

Save(String)

Crea un punto di salvataggio nella transazione, utilizzabile per eseguire il rollback di una parte della transazione, e specifica il nome del punto di salvataggio.

Si applica a