[C++] 数据库 事务处理 →→→→→进入此内容的聊天室

来自 , 2020-07-31, 写在 C++, 查看 150 次.
URL http://www.code666.cn/view/fc4ddc15
  1. #include "stdafx.h"
  2. using namespace System;
  3. using namespace System::Data;
  4. using namespace System::Data::OleDb;
  5.  
  6. ref struct MyEventHandler
  7. {
  8.     static void RowUpdated(Object^ sender, OleDbRowUpdatedEventArgs^ e)
  9.     {
  10.         if ( e->Status == UpdateStatus::ErrorsOccurred )
  11.             throw "Row update failed!";
  12.     }
  13. };
  14.  
  15. void main()
  16. {
  17.     OleDbConnection^ myConnection = nullptr;
  18.     OleDbTransaction^ myTransaction = nullptr;
  19.    
  20.     try
  21.     {
  22.         myConnection = gcnew OleDbConnection(
  23.              "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Music.mdb");
  24.         myConnection->Open();
  25.        
  26.         OleDbDataAdapter^ dataAdapter = gcnew OleDbDataAdapter(
  27.              "SELECT * FROM Music", myConnection);
  28.         OleDbCommandBuilder^ commandBuilder = gcnew OleDbCommandBuilder(dataAdapter);
  29.         dataAdapter->UpdateCommand = commandBuilder->GetUpdateCommand();
  30.        
  31.         dataAdapter->RowUpdated += gcnew OleDbRowUpdatedEventHandler(MyEventHandler::RowUpdated);
  32.        
  33.         DataSet^ myDataSet = gcnew DataSet();
  34.         dataAdapter->MissingSchemaAction = MissingSchemaAction::AddWithKey;
  35.         dataAdapter->Fill(myDataSet);
  36.        
  37.         myTransaction = myConnection->BeginTransaction();
  38.        
  39.         DataTable^ myTable = myDataSet->Tables[0];
  40.        
  41.         DataRow^ row = myTable->Rows->Find("Automatic");
  42.         if ( row != nullptr )
  43.             row["Title"] = "Automatic (Dance Mix)";
  44.  
  45.         row = myTable->Rows->Find("EnTrance");        
  46.         if ( row != nullptr )
  47.             row["GenreName"] = "Trance";
  48.        
  49.         dataAdapter->Update(myDataSet);
  50.         myTransaction->Commit();
  51.     }
  52.     catch(Exception^ e)
  53.     {
  54.         Console::WriteLine(e->Message);
  55.         if ( myTransaction != nullptr )
  56.         {
  57.             myTransaction->Rollback();
  58.             Console::WriteLine("Transaction rolled back.");
  59.         }
  60.     }
  61.     finally
  62.     {
  63.         myConnection->Close();
  64.     }
  65. }
  66.  

回复 "数据库 事务处理"

这儿你可以回复上面这条便签

captcha