DB2 Connection.BeginTransaction( IsolationLevel ) 方法
使用指定的 IsolationLevel 值在数据库中启动事务。
- 名称空间:
IBM.Data.DB2- 组合件:
IBM.Data.DB2(在IBM.Data.DB2.dll)
语法
[Visual Basic]
Overloads Public Function BeginTransaction( _
ByVal isolevel As IsolationLevel _
) As DB2Transaction
[C#]
public DB2Transaction
BeginTransaction(
IsolationLevel isolevel
);
[C++]
public: DB2Transaction
* BeginTransaction(
IsolationLevel isolevel
);
[JScript]
public function BeginTransaction(
isolevel : IsolationLevel
) : DB2Transaction
;
参数
- isolevel
- 此连接的事务隔离级别。 若未指定隔离级别,则使用 IBM®.NET数据服务器提供程序的默认隔离级别。
返回值
用来表示新事务的对象。
异常
| 异常类型 | 条件 |
|---|---|
| InvalidOperationException | 当前有一个活动事务。 不支持并行事务。 |
备注
要提交或回滚事务,必须显式调用 Transaction.Commit DB2®Transaction.Commit 或 DB2 Transaction.Rollback 方法。
示例
[Visual Basic, C#] 以下示例创建一个 DB2 连接和一个 DB2 事务。 它还演示了如何使用 BeginTransaction, DB2事务提交, 和 DB2事务回滚 方法。
[Visual Basic]
Public Sub RunDB2Transaction(myConnString As String)
Dim myConnection As New DB2Connection(myConnString)
myConnection.Open()
Dim myCommand As New DB2Command()
Dim myTrans As DB2Transaction
' Start a local transaction
myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted)
' Assign transaction object for a pending local transaction
myCommand.Transaction = myTrans
Try
myCommand.CommandText = "Insert into STAFF (ID, NAME) VALUES (...)"
myCommand.ExecuteNonQuery()
myCommand.CommandText = "Insert into STAFF (ID, NAME) VALUES (...)"
myCommand.ExecuteNonQuery()
myTrans.Commit()
Console.WriteLine("Both records are written to database.")
Catch e As Exception
myTrans.Rollback()
Console.WriteLine(e.ToString())
Console.WriteLine("Neither record was written to database.")
Finally
myConnection.Close()
End Try
End Sub
[C#]
public void RunDB2Transaction(string myConnString)
{
DB2Connection myConnection = new DB2Connection(myConnString);
myConnection.Open();
DB2Command myCommand = new DB2Command();
DB2Transaction myTrans;
// Start a local transaction
myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted);
// Assign transaction object for a pending local transaction
myCommand.Transaction = myTrans;
try
{
myCommand.CommandText = "Insert into STAFF (ID, NAME) VALUES (...)";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Insert into STAFF (ID, NAME) VALUES (...)";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
myTrans.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Neither record was written to database.");
}
finally
{
myConnection.Close();
}
}