Leer en inglés

Compartir vía


SqlTransaction.Commit Método

Definición

Confirma la transacción de base de datos.

C#
public override void Commit();
C#
public void Commit();

Implementaciones

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.

C#
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

Producto Versiones
.NET Core 1.0, Core 1.1, 6 (package-provided), 7 (package-provided), 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)

Consulte también