#include "DbAccess.h" #define USE_ACCESS_EXAMPLE 1 #ifdef USE_ACCESS_EXAMPLE const char *conStr = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=test.mdb;"; const char *sql = "Select * From OrderData"; #else //using SQLServer //using a 'DSN-less' connection const char *conStr = "DRIVER={SQL Server};DATABASE=;SERVER=;UID=;PWD=;"; const char *sql = "exec sp_who"; #endif int main(){ DbAccess db(conStr); _RecordsetPtr pRst; std::string strData, strSQL; short i; try{ strSQL = sql; pRst = db.Execute(strSQL.c_str()); if (pRst == NULL){ if (db.HasError()){ strData = "ERROR\t"; strData += db.GetLastError(); fprintf(stderr, "%s\n", strData.c_str()); return 1; }else{//no records for some reason fprintf(stderr, "No Records Found\n"); return 0; } } //get column headings... for (i = 0; i < pRst->Fields->Count; i++){ if (i==0){ strData += (char*)((_bstr_t)pRst->Fields->Item[i]->Name); }else{ strData += "\t"; strData += (char*)((_bstr_t)pRst->Fields->Item[i]->Name); } } strData += "\n"; //display data from result set while (!pRst->EndOfFile){ //get actual data... for (i=0; iFields->Count; i++){ if (i==0){ strData += (char*)((_bstr_t)pRst->Fields->GetItem(i)->Value); }else{ strData += "\t"; strData += (char*)((_bstr_t)pRst->Fields->GetItem(i)->Value); } } strData += "\n"; pRst->MoveNext(); } }catch(_com_error &e){ strData = "ERROR\t"; strData += db.PrintProviderError(pRst->GetActiveConnection(), strSQL.c_str()); strData += db.PrintComError(e); fprintf(stderr, "%s\n", strData.c_str()); return 1; } fprintf(stderr, "%s\n", strData.c_str()); return 0; }