Visual C++ .NET/Database ADO.net/OleDbConnection

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Database connection events

 
#include "stdafx.h"
using namespace System;
using namespace System::Data;
using namespace System::Data::OleDb;
using namespace System::Data::SqlClient;
ref struct MyEventHandler
{
    static void StateChange(Object^ sender, StateChangeEventArgs^ e)
    {
        Console::WriteLine(e->CurrentState.ToString());
    }
};
void main()
{
    OleDbConnection^ myOleDbConnection = nullptr;
    SqlConnection^ mySqlConnection = nullptr;
    OleDbConnectionStringBuilder^ connectionBuilder = gcnew OleDbConnectionStringBuilder();
    connectionBuilder->Provider = "Microsoft.Jet.OLEDB.4.0";
    connectionBuilder->DataSource = "music.mdb";
        
    myOleDbConnection = gcnew OleDbConnection(connectionBuilder->ToString());
    myOleDbConnection->Open();
    SqlConnectionStringBuilder^ connectionBuilder2 =gcnew SqlConnectionStringBuilder();
    connectionBuilder2->DataSource = "localhost";
    connectionBuilder2->InitialCatalog = "ultramax";
    connectionBuilder2->UserID = "sa";
    connectionBuilder2->Password = "";
        
    mySqlConnection = gcnew SqlConnection(connectionBuilder2->ToString());
    mySqlConnection->StateChange += gcnew StateChangeEventHandler(MyEventHandler::StateChange);
        
    mySqlConnection->Open();
        
    Console::WriteLine("Database: {0}", mySqlConnection->Database);
    Console::WriteLine("DataSource: {0}", mySqlConnection->DataSource);
    Console::WriteLine("ServerVersion: {0}",mySqlConnection->ServerVersion);
    Console::WriteLine("Workstation ID: {0}",mySqlConnection->WorkstationId);
    myOleDbConnection->Close();
    mySqlConnection->Close();
}


Database Events

 
#include "stdafx.h"
using namespace System;
using namespace System::Data;
using namespace System::Data::OleDb;
using namespace System::Data::SqlClient;
ref struct MyEventHandler{
    static void FillError(Object^ sender, FillErrorEventArgs^ e)
    {
        e->Continue = true;
    }
    static void RowUpdated(Object^ sender, OleDbRowUpdatedEventArgs^ e)
    {
        if ( e->Status == UpdateStatus::ErrorsOccurred )
        {
            e->Status = UpdateStatus::SkipCurrentRow;
            Console::WriteLine(e->Row[e->Row->Table->PrimaryKey[0]->ColumnName]);
        }
    }
};
void main(){
    OleDbConnection^ myConnection = nullptr;
    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->FillError += gcnew FillErrorEventHandler(MyEventHandler::FillError);
    dataAdapter->RowUpdated += gcnew OleDbRowUpdatedEventHandler(MyEventHandler::RowUpdated);
    DataSet^ myDataSet = gcnew DataSet();
    dataAdapter->MissingSchemaAction = MissingSchemaAction::AddWithKey;
    dataAdapter->Fill(myDataSet);
        
    DataTable^ MyTable = myDataSet->Tables[0];        
    DataRow^ row = MyTable->Rows->Find("EnTrance");
        
    if ( row != nullptr )
       row["GenreName"] = "T";
        
    row = MyTable->Rows->Find("Automatic");
    if ( row != nullptr ){
       row["Title"] = "your value";
       dataAdapter->Update(myDataSet);
    }
    myConnection->Close();
}