最近,在做一个MFC的小任务,需要连接数据库对界面的信息进行一些保存,为了操作简单,选用了Access数据库,我电脑中安装的access2007,连接的代码查了下,如下:
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
try
{
pConn.CreateInstance("ADODB.Connection");///创建Connection对象
pConn->Open((_bstr_t)"Provider=Microsoft.ACE.OLEDB.12.0;Data Source= e:\data.accdb" ,"","",adModeUnknown);///连接数据库
}
catch(_com_error &e)
{
// AfxMessageBox(e.Description());
return -1;
}
CString strSql; //SQL的基本语句
pRst=pConn->Execute(class _bstr_t(strSql),NULL,adCmdText);
while(!pRst->rsEOF)
{
//获取表结构中的数据,但是数据类型是_variant_t(可以转换为其他类型),同时表数据获取时,也需要进行强制转换(_bstr_t)
_variant_t v = (_bstr_t)pRst->GetCollect("ID"); //变量v也可以转为其他类型
pRst->MoveNext();
}
pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
在连接数据库的过程中,要注意的一点是,由于Access版本不一样,驱动可能不一样,这里选用的是Provider=Microsoft.ACE.OLEDB.12.0,当时由于驱动版本不对,造成获取数据一致失败了,可以先在网上查下对应access的驱动版本。