SqlTransaction.Commit Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Potvrdí transakci databáze.
public:
override void Commit();
public override void Commit ();
override this.Commit : unit -> unit
Public Overrides Sub Commit ()
Výjimky
Při pokusu o potvrzení transakce došlo k chybě.
Transakce již byla potvrzena nebo vrácena zpět.
-nebo-
Připojení je přerušené.
Příklady
Následující příklad vytvoří SqlConnection a SqlTransaction. Ukazuje také, jak používat Commitmetody , BeginTransactiona Rollback . Transakce se vrátí zpět při jakékoli chybě. Try
/Catch
zpracování chyb se používá ke zpracování všech chyb při pokusu o potvrzení nebo vrácení transakce zpět.
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);
}
}
}
}
}
}
Poznámky
Metoda Commit je ekvivalentní příkazu Transact-SQL COMMIT TRANSACTION. Jakmile byla transakce potvrzena, nelze ji vrátit zpět, protože všechny změny se staly trvalou součástí databáze. Další informace najdete v tématu COMMIT TRANSACTION (Transact-SQL).
Poznámka
Try
/Catch
Zpracování výjimek by se mělo vždy používat při potvrzení nebo vrácení zpět .SqlTransaction Rollback A Commit
vygeneruje, InvalidOperationException pokud je připojení ukončeno nebo pokud transakce již byla vrácena zpět na serveru.
Další informace o transakcích SQL Server najdete v tématu Transakce (Transact-SQL).