Freigeben über


IDbTransaction-Schnittstelle

Stellt eine für eine Datenquelle auszuführende Transaktion dar und wird von .NET Framework-Datenprovidern implementiert, die auf relationale Datenbanken zugreifen.

Namespace: System.Data
Assembly: System.Data (in system.data.dll)

Syntax

'Declaration
Public Interface IDbTransaction
    Inherits IDisposable
'Usage
Dim instance As IDbTransaction
public interface IDbTransaction : IDisposable
public interface class IDbTransaction : IDisposable
public interface IDbTransaction extends IDisposable
public interface IDbTransaction extends IDisposable

Hinweise

Die IDbTransaction-Schnittstelle ermöglicht einer erbenden Klasse das Implementieren einer Transaction-Klasse, die die für eine Datenquelle auszuführende Transaktion darstellt. Weitere Informationen über Transaction-Klassen finden Sie unter Durchführen von Transaktionen. Weitere Informationen über das Implementieren von .NET Framework-Datenanbietern finden Sie unter Implementing a .NET Framework Data Provider.

Eine Anwendung erstellt eine Instanz der IDbTransaction-Schnittstelle nicht direkt, sondern erstellt eine Instanz einer Klasse, die IDbTransaction erbt.

Klassen, die IDbTransaction erben, müssen die geerbten Member implementieren. Sie definieren i. d. R. zusätzliche Member, um anbieterspezifische Funktionen hinzuzufügen. Die IDbTransaction-Schnittstelle definiert z. B. die Commit-Methode. Die OleDbTransaction-Klasse erbt wiederum diese Eigenschaft und definiert außerdem die Begin-Methode.

Hinweise für Implementierer Benennen Sie zur Förderung der Konsistenz unter den .NET Framework-Datenprovidern die erbende Klasse in der Form PrvTransaction, wobei Prv das einheitliche Präfix für alle Klassen in einem bestimmten Namespace von .NET Framework-Datenprovidern ist. Sql ist z. B. das Präfix der SqlTransaction-Klasse im System.Data.SqlClient-Namespace.

Beispiel

Im folgenden Beispiel werden Instanzen der abgeleiteten Klasse SqlConnection und der abgeleiteten KlasseSqlTransaction erstellt. Darüber hinaus wird die Verwendung der Methoden BeginTransaction, Commit und Rollback veranschaulicht.

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("SampleTransaction")

        ' 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
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("SampleTransaction");

        // 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);
            }
        }
    }
}

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

IDbTransaction-Member
System.Data-Namespace