SqlTransaction.Rollback Method
.NET Framework 1.1
Rolls back a transaction from a pending state.
Overload List
Rolls back a transaction from a pending state.
Supported by the .NET Compact Framework.
[Visual Basic] Overloads Public Overridable Sub Rollback() Implements IDbTransaction.Rollback
[C#] public virtual void Rollback();
[C++] public: virtual void Rollback();
[JScript] public function Rollback();
Rolls back a transaction from a pending state, and specifies the transaction or savepoint name.
Supported by the .NET Compact Framework.
[Visual Basic] Overloads Public Sub Rollback(String)
[C#] public void Rollback(string);
[C++] public: void Rollback(String*);
[JScript] public function Rollback(String);
Example
[Visual Basic, C#, C++] The following example creates a SqlConnection and a SqlTransaction. It also demonstrates how to use the BeginTransaction, Commit, and Rollback methods.
[Visual Basic, C#, C++] Note This example shows how to use one of the overloaded versions of Rollback. For other examples that might be available, see the individual overload topics.
[Visual Basic] Public Sub RunSqlTransaction(myConnString As String) Dim myConnection As New SqlConnection(myConnString) myConnection.Open() Dim myCommand As SqlCommand = myConnection.CreateCommand Dim myTrans As SqlTransaction ' Start a local transaction myTrans = myConnection.BeginTransaction("SampleTransaction") ' 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 Region (RegionID, RegionDescription) VALUES (100, 'Description')" myCommand.ExecuteNonQuery() myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')" myCommand.ExecuteNonQuery() myTrans.Commit() Console.WriteLine("Both records are written to database.") Catch e As Exception Try myTrans.Rollback("SampleTransaction") Catch ex As SqlException 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 'RunSqlTransaction [C#] public void RunSqlTransaction(string myConnString) { SqlConnection myConnection = new SqlConnection(myConnString); myConnection.Open(); SqlCommand myCommand = myConnection.CreateCommand(); SqlTransaction myTrans; // Start a local transaction myTrans = myConnection.BeginTransaction("SampleTransaction"); // 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 Region (RegionID, RegionDescription) VALUES (100, 'Description')"; myCommand.ExecuteNonQuery(); myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"; myCommand.ExecuteNonQuery(); myTrans.Commit(); Console.WriteLine("Both records are written to database."); } catch(Exception e) { try { myTrans.Rollback("SampleTransaction"); } 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(); } } [C++] public: void RunSqlTransaction(String* myConnString) { SqlConnection* myConnection = new SqlConnection(myConnString); myConnection->Open(); SqlCommand* myCommand = myConnection->CreateCommand(); SqlTransaction* myTrans; // Start a local transaction myTrans = myConnection->BeginTransaction(S"SampleTransaction"); // Must assign both transaction object and connection // to Command object for a pending local transaction myCommand->Connection = myConnection; myCommand->Transaction = myTrans; try { myCommand->CommandText = S"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"; myCommand->ExecuteNonQuery(); myCommand->CommandText = S"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"; myCommand->ExecuteNonQuery(); myTrans->Commit(); Console::WriteLine(S"Both records are written to database."); } catch(Exception* e) { try { myTrans->Rollback(S"SampleTransaction"); } catch (SqlException* ex) { if (myTrans->Connection != 0) { Console::WriteLine(S"An exception of type {0} was encountered while attempting to roll back the transaction.", ex->GetType()); } } Console::WriteLine(S"An exception of type {0} was encountered while inserting the data.", e->GetType()); Console::WriteLine(S"Neither record was written to database."); } __finally { myConnection->Close(); } }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
See Also
SqlTransaction Class | SqlTransaction Members | System.Data.SqlClient Namespace