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

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

Deal with Hierarchal ResultSet

<source lang="csharp">

  1. include "stdafx.h"

using namespace System; using namespace System::Data; using namespace System::Data::OleDb; void TraverseReader(OleDbDataReader^ Reader){

   while ( Reader->Read() )
       for ( int i = 0; i < Reader->FieldCount; i++ ){
           Object^ Value = Reader->GetValue(i);
           if ( Value->GetType() == OleDbDataReader::typeid )
               TraverseReader(static_cast<OleDbDataReader^>(Value));
           Console::Write(gcnew String(" ", Reader->Depth*2));
           Console::WriteLine("{0} ({1}):\t{2}", Reader->GetName(i),Reader->GetDataTypeName(i), Value);
       }

} void main(){

   OleDbConnection^ myConnection = nullptr;
   
   myConnection = gcnew OleDbConnection("Provider=MSDataShape;Data Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Music.mdb");        
   myConnection->Open();
       
   OleDbCommand^ myCommand = gcnew OleDbCommand(
           "SHAPE {SELECT Name, Description FROM Genre}\
           APPEND ({SELECT GenreName, Title, Duration FROM Music}\
           AS MusicByGenre\
           RELATE Name TO GenreName)",
           myConnection);
   TraverseReader(myCommand->ExecuteReader());
   myConnection->Close();

}

 </source>


Using DataReader

<source lang="csharp">

  1. include "stdafx.h"

using namespace System; using namespace System::Data; using namespace System::Data::OleDb; void main() {

   OleDbConnection^ myConnection = nullptr;
   myConnection = gcnew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Music.mdb");
   myConnection->Open();
   OleDbCommand^ myCommand = gcnew OleDbCommand("SELECT * FROM Music",myConnection);
   OleDbDataReader^ myReader = myCommand->ExecuteReader();
   do{
     while ( myReader->Read() ){
        for ( int i = 0; i < myReader->FieldCount; i++ )
           Console::WriteLine("{0} ({1}):\t{2}",
               myReader->GetName(i), myReader->GetDataTypeName(i),
               myReader->GetValue(i));
        }
     }
   while ( myReader->NextResult() );
   myConnection->Close();

}

 </source>