Udostępnij za pośrednictwem


SqlTransaction Klasa

Definicja

Reprezentuje transakcję języka Transact-SQL, która ma zostać wykonana w bazie danych SQL Server. Klasa ta nie może być dziedziczona.

public ref class SqlTransaction sealed : System::Data::Common::DbTransaction
public ref class SqlTransaction sealed : MarshalByRefObject, IDisposable, System::Data::IDbTransaction
public sealed class SqlTransaction : System.Data.Common.DbTransaction
public sealed class SqlTransaction : MarshalByRefObject, IDisposable, System.Data.IDbTransaction
type SqlTransaction = class
    inherit DbTransaction
type SqlTransaction = class
    inherit MarshalByRefObject
    interface IDbTransaction
    interface IDisposable
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
Public NotInheritable Class SqlTransaction
Inherits MarshalByRefObject
Implements IDbTransaction, IDisposable
Dziedziczenie
SqlTransaction
Dziedziczenie
Dziedziczenie
SqlTransaction
Implementuje

Przykłady

Poniższy przykład tworzy element SqlConnection i .SqlTransaction Pokazuje również, jak używać BeginTransactionmetod , Commiti Rollback . Transakcja zostanie wycofana z dowolnego błędu lub zostanie usunięta bez uprzedniego zatwierdzenia. Try / Catch Obsługa błędów służy do obsługi błędów podczas próby zatwierdzenia lub wycofania transakcji.

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

Uwagi

Aplikacja tworzy SqlTransaction obiekt przez wywołanie BeginTransactionSqlConnection obiektu. Wszystkie kolejne operacje skojarzone z transakcją (na przykład zatwierdzenie lub przerwanie transakcji) są wykonywane na SqlTransaction obiekcie.

Uwaga

Try / Catch obsługa wyjątków powinna być zawsze używana podczas zatwierdzania lub wycofywania SqlTransaction. Zarówno Commit , jak i Rollback wygenerować InvalidOperationException , jeśli połączenie zostało zakończone lub czy transakcja została już wycofana na serwerze.

Aby uzyskać więcej informacji na temat transakcji SQL Server, zobacz Jawne transakcje i Kodowanie wydajnych transakcji.

Właściwości

Connection

SqlConnection Pobiera obiekt skojarzony z transakcją lub null jeśli transakcja nie jest już prawidłowa.

DbConnection

Po zastąpieniu w klasie pochodnej pobiera DbConnection obiekt skojarzony z transakcją.

(Odziedziczone po DbTransaction)
IsolationLevel

Określa IsolationLevel dla tej transakcji.

SupportsSavepoints

Pobiera wartość wskazującą, czy to DbTransaction wystąpienie obsługuje punkty zapisywania bazy danych. Jeśli falsemetody SaveAsync(String, CancellationToken), RollbackAsync(String, CancellationToken) oraz ReleaseAsync(String, CancellationToken) ich synchroniczne odpowiedniki mają zgłaszać wartość NotSupportedException.

(Odziedziczone po DbTransaction)

Metody

Commit()

Zatwierdza transakcję bazy danych.

CommitAsync(CancellationToken)

Asynchronicznie zatwierdza transakcję bazy danych.

(Odziedziczone po DbTransaction)
CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
Dispose()

Zwalnia zasoby przechowywane przez obiekt.

Dispose()

Zwalnia niezarządzane zasoby używane przez DbTransactionprogram .

(Odziedziczone po DbTransaction)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element DbTransaction i opcjonalnie zwalnia zasoby zarządzane.

(Odziedziczone po DbTransaction)
DisposeAsync()

Asynchronicznie dysponuje obiekt transakcji.

(Odziedziczone po DbTransaction)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetLifetimeService()
Przestarzałe.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
InitializeLifetimeService()
Przestarzałe.

Uzyskuje obiekt usługi okresu istnienia, aby kontrolować zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
Release(String)

Niszczy wcześniej zdefiniowany punkt zapisu w bieżącej transakcji. Dzięki temu system może odzyskać niektóre zasoby przed zakończeniem transakcji.

(Odziedziczone po DbTransaction)
ReleaseAsync(String, CancellationToken)

Niszczy wcześniej zdefiniowany punkt zapisu w bieżącej transakcji. Dzięki temu system może odzyskać niektóre zasoby przed zakończeniem transakcji.

(Odziedziczone po DbTransaction)
Rollback()

Wycofywanie transakcji ze stanu oczekiwania.

Rollback(String)

Powoduje wycofanie transakcji ze stanu oczekiwania i określa nazwę transakcji lub punktu zapisywania.

RollbackAsync(CancellationToken)

Asynchronicznie przywraca transakcję ze stanu oczekiwania.

(Odziedziczone po DbTransaction)
RollbackAsync(String, CancellationToken)

Przywraca wszystkie polecenia, które zostały wykonane po ustanowieniu określonego punktu zapisywania.

(Odziedziczone po DbTransaction)
Save(String)

Tworzy punkt zapisywania w transakcji, który może służyć do wycofywania części transakcji i określa nazwę punktu zapisywania.

SaveAsync(String, CancellationToken)

Tworzy punkt zapisywania w transakcji. Dzięki temu wszystkie polecenia, które są wykonywane po ustanowieniu punktu zapisywania, zostaną wycofane, przywracając stan transakcji do tego, co było w momencie punktu zapisywania.

(Odziedziczone po DbTransaction)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

IDbTransaction.Connection

DbConnection Pobiera obiekt skojarzony z transakcją lub odwołanie o wartości null, jeśli transakcja nie jest już prawidłowa.

(Odziedziczone po DbTransaction)

Dotyczy

Zobacz też