SqlTransaction Klass

Definition

Representerar en Transact-SQL transaktion som ska göras i en SQL Server databas. Det går inte att ärva den här klassen.

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
Arv
SqlTransaction
Arv
Implementeringar

Exempel

I följande exempel skapas en SqlConnection och en SqlTransaction. Det visar också hur du använder BeginTransactionmetoderna , Commitoch Rollback . Transaktionen återställs vid eventuella fel eller om den tas bort utan att först checkas in. Try / Catch felhantering används för att hantera eventuella fel vid försök att checka in eller återställa transaktionen.

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

Kommentarer

Programmet skapar ett SqlTransaction objekt genom att anropa BeginTransaction objektet SqlConnection . Alla efterföljande åtgärder som är associerade med transaktionen (till exempel att checka in eller avbryta transaktionen) utförs på SqlTransaction objektet.

Note

Try / Catch undantagshantering bör alltid användas vid incheckning eller återställning av en SqlTransaction. Både Commit och Rollback genererar en InvalidOperationException om anslutningen avslutas eller om transaktionen redan har återställts på servern.

Mer information om SQL Server transaktioner finns i Explicit Transactions and Coding Efficient Transactions.

Egenskaper

Name Description
Connection

Hämtar objektet SqlConnection som är associerat med transaktionen eller null om transaktionen inte längre är giltig.

DbConnection

När det åsidosättas i en härledd klass hämtar det objekt som DbConnection är associerat med transaktionen.

(Ärvd från DbTransaction)
IsolationLevel

Anger för den IsolationLevel här transaktionen.

Metoder

Name Description
Commit()

Genomför databastransaktionen.

CreateObjRef(Type)

Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt.

(Ärvd från MarshalByRefObject)
Dispose()

Frigör de resurser som innehas av objektet.

Dispose()

Släpper de ohanterade resurser som används av DbTransaction.

(Ärvd från DbTransaction)
Dispose(Boolean)

Släpper de ohanterade resurser som används av DbTransaction och släpper eventuellt de hanterade resurserna.

(Ärvd från DbTransaction)
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetLifetimeService()

Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
InitializeLifetimeService()

Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
MemberwiseClone(Boolean)

Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet.

(Ärvd från MarshalByRefObject)
Rollback()

Återställer en transaktion från ett väntande tillstånd.

Rollback(String)

Återställer en transaktion från ett väntande tillstånd och anger transaktions- eller savepoint-namnet.

Save(String)

Skapar en savepoint i transaktionen som kan användas för att återställa en del av transaktionen och anger namnet på sparandepunkten.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

Name Description
IDbTransaction.Connection

Hämtar objektet DbConnection som är associerat med transaktionen eller en null-referens om transaktionen inte längre är giltig.

(Ärvd från DbTransaction)

Gäller för

Se även