MySQL Connector/Net |
MySqlConnection..::.BeginTransaction Method (IsolationLevel) |
MySqlConnection Class Example See Also Send Feedback |
Begins a database transaction with the specified isolation level.
Namespace:
MySql.Data.MySqlClient
Assembly:
MySql.Data (in MySql.Data.dll) Version: 6.2.2.0
Syntax
C# |
---|
public MySqlTransaction BeginTransaction( IsolationLevel iso ) |
Visual Basic (Declaration) |
---|
Public Function BeginTransaction ( _ iso As IsolationLevel _ ) As MySqlTransaction |
Visual C++ |
---|
public: MySqlTransaction^ BeginTransaction( IsolationLevel iso ) |
Parameters
- iso
- Type: System.Data..::.IsolationLevel
The isolation level under which the transaction should run.
Return Value
An object representing the new transaction.Remarks
This command is equivalent to the MySQL BEGIN TRANSACTION command.
You must explicitly commit or roll back the transaction using the Commit()()() or Rollback()()() method.
Note:
If you do not specify an isolation level, the default isolation level is used. To specify an isolation
level with the BeginTransaction()()() method, use the overload that takes the iso parameter.
Also note that any attempt to begin a transaction while a transaction is in progress will throw an exception on MySQL 4.1 and higher.
On MySQL 4.0, an exception will not be thrown because servers 4.0 and earlier did not report their transacation status.
Examples
The following example creates a MySqlConnection and a
MySqlTransaction. It also demonstrates how to use the BeginTransaction, a
Commit()()(), and Rollback()()() methods.
CopyVB.NET
Public Sub RunTransaction(myConnString As String) Dim myConnection As New MySqlConnection(myConnString) myConnection.Open() Dim myCommand As MySqlCommand = myConnection.CreateCommand() Dim myTrans As MySqlTransaction ' Start a local transaction myTrans = myConnection.BeginTransaction() ' Must assign both transaction object and connection ' to Command object for a pending local transaction myCommand.Connection = myConnection myCommand.Transaction = myTrans Try myCommand.CommandText = "Insert into Test (id, desc) VALUES (100, 'Description')" myCommand.ExecuteNonQuery() myCommand.CommandText = "Insert into Test (id, desc) VALUES (101, 'Description')" myCommand.ExecuteNonQuery() myTrans.Commit() Console.WriteLine("Both records are written to database.") Catch e As Exception Try myTrans.Rollback() Catch ex As MySqlException If Not myTrans.Connection Is Nothing Then Console.WriteLine("An exception of type " + ex.GetType().ToString() + _ " was encountered while attempting to roll back the transaction.") End If End Try Console.WriteLine("An exception of type " + e.GetType().ToString() + _ "was encountered while inserting the data.") Console.WriteLine("Neither record was written to database.") Finally myConnection.Close() End Try End Sub
CopyC#
public void RunTransaction(string myConnString) { MySqlConnection myConnection = new MySqlConnection(myConnString); myConnection.Open(); MySqlCommand myCommand = myConnection.CreateCommand(); MySqlTransaction myTrans; // Start a local transaction myTrans = myConnection.BeginTransaction(); // Must assign both transaction object and connection // to Command object for a pending local transaction myCommand.Connection = myConnection; myCommand.Transaction = myTrans; try { myCommand.CommandText = "insert into Test (id, desc) VALUES (100, 'Description')"; myCommand.ExecuteNonQuery(); myCommand.CommandText = "insert into Test (id, desc) VALUES (101, 'Description')"; myCommand.ExecuteNonQuery(); myTrans.Commit(); Console.WriteLine("Both records are written to database."); } catch(Exception e) { try { myTrans.Rollback(); } catch (SqlException ex) { if (myTrans.Connection != null) { Console.WriteLine("An exception of type " + ex.GetType() + " was encountered while attempting to roll back the transaction."); } } Console.WriteLine("An exception of type " + e.GetType() + " was encountered while inserting the data."); Console.WriteLine("Neither record was written to database."); } finally { myConnection.Close(); } }
Exceptions
Exception | Condition |
---|---|
System..::.InvalidOperationException | Parallel exceptions are not supported. |