Bagikan melalui


SqlTransaction.Rollback Metode

Definisi

Overload

Rollback()

Mengembalikan transaksi dari status tertunda.

Rollback(String)

Mengembalikan transaksi dari status tertunda, dan menentukan nama transaksi atau titik simpan.

Rollback()

Mengembalikan transaksi dari status tertunda.

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

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 BeginTransactionmetode , Commit, dan Rollback . Transaksi digulung balik pada kesalahan apa pun. Try/Catch penanganan kesalahan digunakan untuk menangani kesalahan apa pun saat mencoba menerapkan atau mengembalikan transaksi.

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

Keterangan

Metode Rollback ini setara dengan pernyataan TRANSAKSI ROLLBACK Transact-SQL. Untuk informasi selengkapnya, lihat ROLLBACK TRANSACTION (Transact-SQL) .

Transaksi hanya dapat digulung balik dari status tertunda (setelah BeginTransaction dipanggil, tetapi sebelumnya Commit dipanggil). Transaksi digulung balik jika dibuang sebelum Commit atau Rollback dipanggil.

Catatan

Try/Catch penanganan pengecualian harus selalu digunakan saat menggulung balik transaksi. 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

Rollback(String)

Mengembalikan transaksi dari status tertunda, dan menentukan nama transaksi atau titik simpan.

public:
 void Rollback(System::String ^ transactionName);
public:
 override void Rollback(System::String ^ transactionName);
public void Rollback (string transactionName);
public override void Rollback (string transactionName);
override this.Rollback : string -> unit
Public Sub Rollback (transactionName As String)
Public Overrides Sub Rollback (transactionName As String)

Parameter

transactionName
String

Nama transaksi yang akan digulung balik, atau titik penyimpanan yang akan digulung balik.

Pengecualian

Tidak ada nama transaksi yang ditentukan.

Transaksi telah dilakukan atau digulung balik.

-atau-

Koneksi terputus.

Contoh

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

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("SampleTransaction");

                // 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("SampleTransaction");
                    }
                    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);
                    }
                }
            }
        }
    }
}

Keterangan

Metode Rollback ini setara dengan pernyataan TRANSAKSI ROLLBACK Transact-SQL. Untuk informasi selengkapnya, lihat Transaksi (Transact-SQL).

Transaksi hanya dapat digulung balik dari status tertunda (setelah BeginTransaction dipanggil, tetapi sebelumnya Commit dipanggil). Transaksi digulung balik jika dibuang sebelum Commit atau Rollback dipanggil.

Catatan

Try/Catch penanganan pengecualian harus selalu digunakan saat menggulung balik transaksi. 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