DB2 Version 9.7 for Linux, UNIX, and Windows

DB2Connection.BeginTransaction () Method

Begins a transaction at the database.

Namespace:
IBM.Data.DB2
Assembly:
IBM.Data.DB2 (in IBM.Data.DB2.dll)

Syntax

[Visual Basic]
Overloads Public Function BeginTransaction() As DB2Transaction

[C#]
public DB2Transaction
 BeginTransaction();
[C++]
public: DB2Transaction
* BeginTransaction();
[JScript]
public function BeginTransaction() : DB2Transaction
;

Return value

An object representing the new transaction.

Exceptions

Exception type Condition
InvalidOperationException A transaction is currently active. Parallel transactions are not supported.

Remarks

To commit or roll back the transaction, you must explicitly use the DB2Transaction.Commit or DB2Transaction.Rollback methods.

Note: If you do not specify an isolation level, the default isolation level for the IBM Data Server Provider for .NET is used. For information about setting the isolation level with the BeginTransaction method, see BeginTransaction Method (IsolationLevel).

Example

[Visual Basic, C#] The following example creates a DB2Connection and a DB2Transaction . It also demonstrates how to use the BeginTransaction, DB2Transaction.Commit , and DB2Transaction.Rollback methods.

[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()
    ' 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();
   // 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();
   }
}