#import "G:\Program Files\Common Files\System\ADO\msado15.dll" #include "Debug\msado15.tlh" #include #include using namespace std; int main() { CoInitialize(0); { HRESULT hr = -1; CComPtr cnnobj; CComPtr rdsnobj; CComPtr errobj; hr = cnnobj.CoCreateInstance(L"ADODB.Connection.2.7"); ADODB::_Connection* cnn; ADODB::_Recordset* rds; ADODB::Error* err; BSTR berr; ADODB::Fields* fds; ADODB::Field* fd1; ADODB::Field* fd2; hr = cnnobj->QueryInterface(&cnn); hr = cnn->Open(L"driver={Microsoft Access Driver (*.mdb)};dbq=[c:\\db1.mdb];", L"", L"", -1); hr = rdsnobj.CoCreateInstance(L"ADODB.Recordset.2.7"); hr = rdsnobj->QueryInterface(&rds); hr = errobj.CoCreateInstance(L"ADODB.Error.2.7"); hr = errobj->QueryInterface(&err); hr = rds->put_ActiveConnection(_variant_t(cnn)); hr = rds->Open(_variant_t("select * from Table1"), _variant_t(cnn), ADODB::adOpenUnspecified, ADODB::adLockUnspecified, -1); VARIANT_BOOL eof; VARIANT_BOOL bof; hr = rds->MoveFirst(); hr = rds->get_Fields(&fds); hr = fds->get_Item(_variant_t(L"X"), &fd1); hr = fds->get_Item(_variant_t(L"Y"), &fd2); BSTR namex; BSTR namey; hr = fd1->get_Name(&namex); hr = fd2->get_Name(&namey); cout<< "filends count: "<< fds->GetCount()<< endl; wcout<< L"<"<< namex<< L"><"<< namey<< L">"<< endl; VARIANT valx, valy; while(true) { hr = rds->get_EOF(&eof); hr = rds->get_BOF(&bof); if(eof)break; if(bof)break; fd1->get_Value(&valx); fd2->get_Value(&valy); wcout<< L"{"<< (wchar_t*)_bstr_t(_variant_t(valx))<< L"}{"; wcout<< (wchar_t*)_bstr_t(_variant_t(valy))<< L"}"<< endl; hr = rds->MoveNext(); } hr = rds->Close(); hr = cnn->Close(); } CoUninitialize(); return 0; }