Partager via


SqlTransaction Classe

Définition

Représente une transaction Transact-SQL à exécuter dans une base de données SQL Server. Cette classe ne peut pas être héritée.

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
Héritage
SqlTransaction
Héritage
Héritage
SqlTransaction
Implémente

Exemples

L’exemple suivant crée un SqlConnection et un SqlTransaction. Il montre également comment utiliser les BeginTransactionméthodes , Commitet .Rollback La transaction est restaurée en cas d’erreur ou si elle est supprimée sans avoir été validée au préalable. Try / Catch la gestion des erreurs est utilisée pour gérer les erreurs lors de la tentative de validation ou de restauration de la transaction.

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

Remarques

L’application crée un SqlTransaction objet en appelant BeginTransaction l’objet SqlConnection . Toutes les opérations suivantes associées à la transaction (par exemple, la validation ou l’abandon de la transaction) sont effectuées sur l’objet SqlTransaction .

Notes

Try / Catch la gestion des exceptions doit toujours être utilisée lors de la validation ou de la restauration d’un SqlTransaction. Les deux Commit et Rollback génèrent un InvalidOperationException si la connexion est terminée ou si la transaction a déjà été restaurée sur le serveur.

Pour plus d’informations sur les transactions SQL Server, consultez Transactions explicites et codage des transactions efficaces.

Propriétés

Connection

Obtient l'objet SqlConnection associé à la transaction, ou null si la transaction n'est plus valide.

DbConnection

En cas de substitution dans une classe dérivée, obtient l’objet DbConnection associé à la transaction.

(Hérité de DbTransaction)
IsolationLevel

Spécifie IsolationLevel pour cette transaction.

SupportsSavepoints

Obtient une valeur qui indique si cette instance DbTransaction prend en charge les points de sauvegarde de base de données. Si false, les méthodes SaveAsync(String, CancellationToken), RollbackAsync(String, CancellationToken) et ReleaseAsync(String, CancellationToken) ainsi que leurs homologues synchrones doivent lever NotSupportedException.

(Hérité de DbTransaction)

Méthodes

Commit()

Valide la transaction de base de données.

CommitAsync(CancellationToken)

Valide de façon asynchrone la transaction de base de données.

(Hérité de DbTransaction)
CreateObjRef(Type)

Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant.

(Hérité de MarshalByRefObject)
Dispose()

Libère les ressources utilisées par l’objet.

Dispose()

Libère toutes les ressources non managées utilisées par DbTransaction.

(Hérité de DbTransaction)
Dispose(Boolean)

Libère les ressources non managées utilisées par DbTransaction et libère éventuellement les ressources managées.

(Hérité de DbTransaction)
DisposeAsync()

Supprime de manière asynchrone l’objet de transaction.

(Hérité de DbTransaction)
Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetLifetimeService()
Obsolète.

Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
InitializeLifetimeService()
Obsolète.

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
MemberwiseClone(Boolean)

Crée une copie superficielle de l'objet MarshalByRefObject actuel.

(Hérité de MarshalByRefObject)
Release(String)

Détruit un point de sauvegarde précédemment défini dans la transaction en cours. Cela permet au système de récupérer des ressources avant la fin de la transaction.

(Hérité de DbTransaction)
ReleaseAsync(String, CancellationToken)

Détruit un point de sauvegarde précédemment défini dans la transaction en cours. Cela permet au système de récupérer des ressources avant la fin de la transaction.

(Hérité de DbTransaction)
Rollback()

Annule une transaction à partir d’un état d’attente.

Rollback(String)

Restaure une transaction à partir d'un état d'attente et spécifie le nom de la transaction ou du point d'enregistrement.

RollbackAsync(CancellationToken)

Restaure de façon asynchrone une transaction à partir d’un état d’attente.

(Hérité de DbTransaction)
RollbackAsync(String, CancellationToken)

Restaure toutes les commandes qui ont été exécutées après l’établissement du point d’enregistrement spécifié.

(Hérité de DbTransaction)
Save(String)

Crée un point d'enregistrement dans la transaction pouvant être utilisé pour restaurer une partie de la transaction et spécifie le nom de ce point d'enregistrement.

SaveAsync(String, CancellationToken)

Crée un point de sauvegarde dans la transaction. Cela permet de restaurer toutes les commandes exécutées après l’établissement du point de sauvegarde, et de restaurer l’état de la transaction tel qu’il était au moment du point de sauvegarde.

(Hérité de DbTransaction)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

IDbTransaction.Connection

Obtient l’objet DbConnection associé à la transaction, ou une référence null si la transaction n’est plus valide.

(Hérité de DbTransaction)

S’applique à

Voir aussi