SqlCeConnectionBeginTransaction 方法
开始数据库事务。
命名空间: System.Data.SqlServerCe
程序集: System.Data.SqlServerCe(在 System.Data.SqlServerCe.dll 中)
下面的示例创建一个 SqlCeConnection 和一个 SqlCeTransaction,然后阐释如何使用 BeginTransaction、 Commit 和 Rollback 方法。
Dim conn As New SqlCeConnection("Data Source = MyDatabase.sdf; Password ='<pwd>'") conn.Open()' Start a local transaction'Dim tx As SqlCeTransaction = conn.BeginTransaction()' By default, commands run in auto-commit mode; 'Dim cmd1 As SqlCeCommand = conn.CreateCommand()' You may create multiple commands on the same connection'Dim cmd2 As SqlCeCommand = conn.CreateCommand()' To enlist a command in a transaction, set the Transaction property'cmd1.Transaction = txTry cmd1.CommandText = "INSERT INTO Shippers ([Company Name]) VALUES ('Northwind Traders')" cmd1.ExecuteNonQuery() ' Auto-commited because cmd2 is not enlisted in a transaction ' cmd2.CommandText = "INSERT INTO Employees ([Last Name], [First Name]) VALUES ('Decker', 'Barbara')" cmd2.ExecuteNonQuery() ' This will cause referential constraint violation ' cmd1.CommandText = "DELETE FROM Products WHERE [Product ID] = 1" cmd1.ExecuteNonQuery() ' Commit the changes to disk if everything above succeeded ' tx.Commit()Catch tx.Rollback()Finally conn.Close()End Try
SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf; Password ='<pwd>'");
conn.Open();
// Start a local transaction
//
SqlCeTransaction tx = conn.BeginTransaction();
// By default, commands run in auto-commit mode;
//
SqlCeCommand cmd1 = conn.CreateCommand();
// You may create multiple commands on the same connection
//
SqlCeCommand cmd2 = conn.CreateCommand();
// To enlist a command in a transaction, set the Transaction property
//
cmd1.Transaction = tx;
try
{
cmd1.CommandText = "INSERT INTO Shippers ([Company Name]) VALUES ('Northwind Traders')";
cmd1.ExecuteNonQuery();
// Auto-commited because cmd2 is not enlisted in a transaction
//
cmd2.CommandText = "INSERT INTO Employees ([Last Name], [First Name]) VALUES ('Decker', 'Barbara')";
cmd2.ExecuteNonQuery();
// This will cause referential constraint violation
//
cmd1.CommandText = "DELETE FROM Products WHERE [Product ID] = 1";
cmd1.ExecuteNonQuery();
// Commit the changes to disk if everything above succeeded
//
tx.Commit();
}
catch (Exception)
{
tx.Rollback();
}
finally
{
conn.Close();
}