#define _WIN32_DCOM#pragma warning(push)
#pragma warning(disable:4146)
#import "MSADO15.DLL" no_namespace rename("EOF", "EndOfFile")
#pragma warning(pop)int main(int argc, char* argv[])
{
_ConnectionPtr m_pConn;
_RecordsetPtr m_pRs;
CoInitializeEx(NULL, COINIT_MULTITHREADED);
_bstr_t bstrConnStr = "Driver={Microsoft Visual FoxPro Driver}; SourceType=DBC;" & _
                 "SourceDB=f:\\somepath\\mySourceDb.dbc; Exclusive=No;";
// or
// "Driver={Microsoft Visual FoxPro Driver}; SourceType=DBF;" & _
//                 "SourceDB=f:\\\somepath\mySourceDbFolder; Exclusive=No;" 
try{
m_pConn.CreateInstance( __uuidof(Connection) );
m_pRs.CreateInstance( __uuidof(Recordset) );
m_pConn->Open( bstrConnStr, "", "", adConnectUnspecified );
m_pRs->Open( "SELECT * from table1", 
m_pConn.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);

m_pRs->MoveFirst();
long lColumn = m_pRs->Fields->Count;
for( long i=0; i<lColumn; i++ )
{
printf("%-12s", (char*)m_pRs->Fields->Item[i]->Name );
}

while( ! m_pRs->EndOfFile )
{
printf("\n");
for( long i=0; i<lColumn; i++ )
{
_variant_t vValue = m_pRs->Fields->Item[i]->Value;
vValue.ChangeType( VT_BSTR );
printf("%-12S", vValue.bstrVal );
}
m_pRs->MoveNext();
}
m_pRs->Close();
m_pConn->Close();
}catch( _com_error e )
{
printf( "\n%s Error: %ld\r\n"
"%s\r\n"
"%s\r\n",
(char*)e.Source(),
e.Error(),
(char*)e.Description(),
(char*)e.ErrorMessage() );
m_pRs->Close();
m_pConn->Close();
}
CoUninitialize();
PAUSE;
return 0;
}