Mega Code Archive

 
Categories / Visual C++ .NET / ADO Database
 

Deal with Hierarchal ResultSet

#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(); }