Lokale Transaktion
Zu Abschnitt 5.3.4 des Buchs
Dieses Beispiel zeigt, wie man für eine Verbindung eine Transaktion erzeugen
und mehrere Kommandos innerhalb dieser Transaktion ausführen kann.
Mit der Methode BeginTransaction wird eine Transaktion erzeugt. Nun wird beim
Kommandoobjekt diese Transaktion gesetzt und dann zwei unterschiedliche
DELETE-Kommandos ausgeführt. Beide werden entweder mit Commit übernommen oder
mit Rollback zurückgenommen.
5-3-4-LocalTransactionSample.cs
using System;
using System.Data;
using System.Data.SqlClient;
namespace Chapter5
{
public class LocalTransactionSample
{
public static void Main()
{
string connStr = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=Northwind; " +
"Integrated Security=True;";
SqlConnection con = new SqlConnection(connStr);
IDbTransaction trans = null;
try
{
con.Open();
//----- Kommandoobjekt anlegen
IDbCommand cmd = con.CreateCommand();
//----- Beginn einer benutzerdefinierten Transaktion, die zwei SQL-Anweisungen umfasst
trans = con.BeginTransaction();
cmd.Transaction = trans;
//Bestellungen loeschen
cmd.CommandText = "DELETE [Order Details] WHERE OrderID = 10258";
cmd.ExecuteNonQuery();
//Bestellkopf loeschen
cmd.CommandText = "DELETE Orders WHERE OrderID = 10258";
cmd.ExecuteNonQuery();
trans.Commit(); // Transaktion erfolgreich beenden
}
catch (Exception e)
{
if (trans != null)
trans.Rollback(); // Transaktion abbrechen und Aenderungen rueckgngig machen
Console.WriteLine(e.ToString());
}
finally
{
try { con.Close(); }
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
}
}
}
}
|
|