一、使用odbc接口,在這裡我們使用mfc的cdatabase類,該類是對sqlconnect等odbc的api的封裝。需要包含afxdb.h
bool odbcconnect(cstring strdbfile)
{
cstring strconnect;
strconnect.format(_t("odbc;driver={microsoft access driver (*.mdb)};uid=sa;pwd=;dbq=%s"), strdbfile);
cdatabase db;
if(db.open(null, false, false, strconnect))
//連接配接資料庫成功
crecordset rs(&db);
cstring strsql;
strsql = _t("select * from info"); //sql語句
if(rs.isopen())
cdbvariant variant;
rs.movefirst();
while(!rs.iseof())
//讀取記錄
rs.getfieldvalue(_t("姓名"), variant);
rs.movenext();
}
db.close();
return true;
return false;
二、使用ado連接配接資料庫,因為要使用com,需要初始化(coinitialize).然後就可以生成接口的對象操作,代碼如下:
#import "c:program files/common files/system/ado/msado15.dll" rename("eof", "adoeof") //生成c++類,改變eof函數的名稱
using namespace adodb;
bool adoconnect(cstring strdbfile)
_connectionptr pconnection;
if(pconnection.createinstance(__uuidof(connection)) != s_ok)
strconnect.format(_t("provider=microsoft.jet.oledb.4.0;data source=%s"), strdbfile);
if(pconnection->open(_bstr_t(strconnect), "", "", admodeunknown) == s_ok)
_recordsetptr precordset;
if(precordset.createinstance(__uuidof(recordset)) != s_ok)
pconnection->close();
strsql = _t("select * from info");
hresult hr = precordset->open(_bstr_t(strsql), _variant_t((idispatch*)pconnection, true), adopenunspecified, adlockunspecified, adcmdunknown);
if(hr != s_ok)
_variant_t vt;
precordset->movefirst();
while(!precordset->adoeof)
vt = precordset->fields->getitem("姓名")->value;
precordset->movenext();
最新内容請見作者的github頁:http://qaseven.github.io/