SqlTransaction Classe

Definição

Representa uma transação Transact-SQL a ser feita numa base de dados SQL Server. Esta classe não pode ser herdada.

public ref class SqlTransaction sealed : MarshalByRefObject, IDisposable, System::Data::IDbTransaction
public ref class SqlTransaction sealed : System::Data::Common::DbTransaction
public sealed class SqlTransaction : MarshalByRefObject, IDisposable, System.Data.IDbTransaction
public sealed class SqlTransaction : System.Data.Common.DbTransaction
type SqlTransaction = class
    inherit MarshalByRefObject
    interface IDbTransaction
    interface IDisposable
type SqlTransaction = class
    inherit DbTransaction
Public NotInheritable Class SqlTransaction
Inherits MarshalByRefObject
Implements IDbTransaction, IDisposable
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
Herança
SqlTransaction
Herança
Implementações

Exemplos

O exemplo seguinte cria um SqlConnection e um SqlTransaction. Também demonstra como usar os BeginTransactionmétodos , Commit, e Rollback . A transação é revertida em caso de erro ou se for descartada sem ter sido previamente confirmada. Try / Catch O tratamento de erros é usado para tratar quaisquer erros ao tentar comprometer ou reverter a transação.

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);
            }
        }
    }
}
Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As SqlCommand = connection.CreateCommand()
        Dim transaction As SqlTransaction

        ' 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 ex As Exception
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
            Console.WriteLine("  Message: {0}", ex.Message)

            ' Attempt to roll back the transaction.
            Try
                transaction.Rollback()

            Catch ex2 As Exception
                ' 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)
            End Try
        End Try
    End Using
End Sub

Observações

A aplicação cria um SqlTransaction objeto ao chamar BeginTransaction o SqlConnection objeto. Todas as operações subsequentes associadas à transação (por exemplo, confirmar ou abortar a transação) são realizadas no SqlTransaction objeto.

Note

Try / Catch O tratamento de exceções deve ser sempre usado ao fazer commit ou reverter um SqlTransaction. Tanto Commit como Rollback gerar um InvalidOperationException se a ligação for terminada ou se a transação já tiver sido revertida no servidor.

Para mais informações sobre transações SQL Server, consulte Transações Explícitas e Transações Eficientes de Codificação.

Propriedades

Name Description
Connection

Obtém o SqlConnection objeto associado à transação, ou null se a transação já não for válida.

DbConnection

Quando sobrescrito numa classe derivada, obtém-se o DbConnection objeto associado à transação.

(Herdado de DbTransaction)
IsolationLevel

Especifica o IsolationLevel para esta transação.

Métodos

Name Description
Commit()

Faz commit na transação da base de dados.

CreateObjRef(Type)

Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
Dispose()

Liberta os recursos que o objeto detém.

Dispose()

Liberta os recursos não geridos usados pelo DbTransaction.

(Herdado de DbTransaction)
Dispose(Boolean)

Liberta os recursos não geridos usados pelo DbTransaction e opcionalmente liberta os recursos geridos.

(Herdado de DbTransaction)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetLifetimeService()

Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso.

(Herdado de MarshalByRefObject)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeLifetimeService()

Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso.

(Herdado de MarshalByRefObject)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto atual MarshalByRefObject .

(Herdado de MarshalByRefObject)
Rollback()

Reverte uma transação de um estado pendente.

Rollback(String)

Reverte uma transação de um estado pendente e especifica o nome da transação ou do ponto de gravação.

Save(String)

Cria um ponto de gravação na transação que pode ser usado para reverter uma parte da transação e especifica o nome do ponto de gravação.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

Name Description
IDbTransaction.Connection

Recebe o DbConnection objeto associado à transação, ou uma referência nula se a transação deixar de ser válida.

(Herdado de DbTransaction)

Aplica-se a

Ver também