Compartir a través de


SqlTransaction.Commit Método

Definición

Confirma la transacción de base de datos.

public:
 override void Commit();
public override void Commit ();
override this.Commit : unit -> unit
Public Overrides Sub Commit ()

Excepciones

Error al intentar confirmar la transacción.

Ya se confirmó o revirtió la transacción.

O bien

Se interrumpió la conexión.

Ejemplos

En el ejemplo siguiente se crea un SqlConnection objeto y .SqlTransaction También muestra cómo usar los Commitmétodos , BeginTransactiony Rollback . La transacción se revierte en cualquier error. Try/Catch El control de errores se usa para controlar los errores al intentar confirmar o revertir la transacción.

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

Comentarios

El Commit método es equivalente a la instrucción COMMIT TRANSACTION de Transact-SQL. No se puede revertir una transacción una vez confirmada, porque todas las modificaciones se han convertido en una parte permanente de la base de datos. Para obtener más información, vea COMMIT TRANSACTION (Transact-SQL).

Nota:

Try/CatchSiempre se debe usar el control de excepciones al confirmar o revertir .SqlTransaction Tanto Commit como Rollback genera un InvalidOperationException si la conexión finaliza o si la transacción ya se ha revertido en el servidor.

Para obtener más información sobre SQL Server transacciones, vea Transacciones (Transact-SQL).

Se aplica a