Mega Code Archive

 
Categories / Visual C++ .NET / ADO Database
 

Using Transactions

#include "stdafx.h" using namespace System; using namespace System::Data; using namespace System::Data::OleDb; ref struct MyEventHandler {     static void RowUpdated(Object^ sender, OleDbRowUpdatedEventArgs^ e)     {         if ( e->Status == UpdateStatus::ErrorsOccurred )             throw "Row update failed!";     } }; void main() {     OleDbConnection^ myConnection = nullptr;     OleDbTransaction^ myTransaction = nullptr;          try     {         myConnection = gcnew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Music.mdb");         myConnection->Open();                  OleDbDataAdapter^ dataAdapter = gcnew OleDbDataAdapter("SELECT * FROM Music", myConnection);         OleDbCommandBuilder^ commandBuilder = gcnew OleDbCommandBuilder(dataAdapter);         dataAdapter->UpdateCommand = commandBuilder->GetUpdateCommand();                  dataAdapter->RowUpdated += gcnew OleDbRowUpdatedEventHandler(MyEventHandler::RowUpdated);                  DataSet^ myDataSet = gcnew DataSet();         dataAdapter->MissingSchemaAction = MissingSchemaAction::AddWithKey;         dataAdapter->Fill(myDataSet);                  myTransaction = myConnection->BeginTransaction();                  DataTable^ myTable = myDataSet->Tables[0];                  DataRow^ row = myTable->Rows->Find("Automatic");         if ( row != nullptr )             row["Title"] = "Automatic (Dance Mix)";         row = myTable->Rows->Find("EnTrance");                 if ( row != nullptr )             row["GenreName"] = "Trance";                  dataAdapter->Update(myDataSet);         myTransaction->Commit();     }     catch(Exception^ e)     {         Console::WriteLine(e->Message);         if ( myTransaction != nullptr )         {             myTransaction->Rollback();             Console::WriteLine("Transaction rolled back.");         }     }     finally     {         myConnection->Close();     } }