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 sealed class SqlTransaction : System.Data.Common.DbTransaction
type SqlTransaction = class
    inherit DbTransaction
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
Héritage
SqlTransaction

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.

using Microsoft.Data.SqlClient;

namespace Transaction1CS
{
    class Program
    {
        static void Main()
        {
            string connectionString =
                "Persist Security Info=False;Integrated Security=SSPI;database=Northwind;server=(local)";
            ExecuteSqlTransaction(connectionString);
            Console.ReadLine();
        }
        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);
                    }
                }
            }
        }
    }
}

Remarques

L’application crée un SqlTransaction objet en appelant BeginTransaction sur l’objet SqlConnection . Toutes les opérations suivantes associées à la transaction (par exemple, validation ou 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. Rollback Et Commit 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.

IsolationLevel

Spécifie IsolationLevel pour cette transaction.

Méthodes

Commit()

Valide la transaction de base de données.

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.

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.

S’applique à