Assumes VC++
Code:
#include <windows.h>
#include <comdef.h>
#include <comutil.h>
#include <iostream>
#include <sstream>
#import "libid:{2A75196C-D9EB-4129-B803-931327F72D5C}" rename("EOF","EOF_")//ADO
const WCHAR* ConnectionString = L"Provider=Microsoft.Jet.OLEDB.4.0;"
L"Data Source=C:\\Test.mdb;Persist Security Info=False";
int main(void)
{
CoInitialize(0);
try
{
ADODB::_ConnectionPtr oCon;
HRESULT Res = oCon.CreateInstance(L"ADODB.Connection");
if(FAILED(Res))
throw _com_error(Res);
oCon->Open(ConnectionString,L"",L"",0);
ADODB::_RecordsetPtr oRec = oCon->OpenSchema(ADODB::adSchemaProviderSpecific,
vtMissing, L"{947bb102-5d43-11d1-bdbf-00c04fb92675}");
long Count = oRec->GetFields()->GetCount();
_variant_t Var;
while(!oRec->EOF_)
{
std::stringstream ss;
for(long i = 0;i < Count;++i)
{
Var = oRec->GetFields()->GetItem(i)->GetValue();
if(Var.vt == VT_NULL)
ss << "<NULL> ";
else
ss << static_cast<LPCSTR>(_bstr_t(Var)) << " ";
}
std::cout << ss.str() << std::endl;
oRec->MoveNext();
}
std::cout << "End of List" << std::endl;
}
catch(_com_error& e)
{
std::cerr << "Error Cought - " << e.ErrorMessage() << std::endl;
}
CoUninitialize();
}