Bagikan melalui


SqlTransaction.Commit Metode

Definisi

Menerapkan transaksi database.

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

Penerapan

Pengecualian

Terjadi kesalahan saat mencoba melakukan transaksi.

Transaksi telah dilakukan atau digulung balik.

-atau-

Koneksi terputus.

Contoh

Contoh berikut membuat SqlConnection dan SqlTransaction. Ini juga menunjukkan cara menggunakan Commitmetode , , BeginTransactiondan Rollback . Transaksi digulung balik pada kesalahan apa pun. Try / Catch penanganan kesalahan digunakan untuk menangani kesalahan apa pun saat mencoba menerapkan atau mengembalikan transaksi.

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

Keterangan

Metode Commit ini setara dengan pernyataan TRANSACT-SQL COMMIT TRANSACTION. Anda tidak dapat mengembalikan transaksi setelah dilakukan, karena semua modifikasi telah menjadi bagian permanen dari database. Untuk informasi selengkapnya, lihat COMMIT TRANSACTION (Transact-SQL) .

Catatan

Try / Catch penanganan pengecualian harus selalu digunakan saat melakukan atau mengembalikan SqlTransaction. Keduanya Commit dan Rollback menghasilkan InvalidOperationException jika koneksi dihentikan atau jika transaksi telah digulung balik di server.

Untuk informasi selengkapnya tentang transaksi SQL Server, lihat Transaksi (Transact-SQL).

Berlaku untuk

Lihat juga