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

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

Database connection events

<source lang="csharp">

  1. 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();

}

 </source>


Database Events

<source lang="csharp">

  1. 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();

}

 </source>