Using Transactions : Transaction « Database ADO.net « Visual C++ .NET

Home
Visual C++ .NET
1.2D
2.Class
3.Collections
4.Data Type
5.Database ADO.net
6.Delegate
7.Development
8.File Directory
9.Function
10.Generics
11.GUI Form
12.Language Basics
13.Network
14.Reflection
15.Security
16.Statement
17.Structure
18.Thread
19.XML
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Visual C++ .NET » Database ADO.net » Transaction 
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();
    }
}

   
  
Related examples in the same category
1.Transactions
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.