在文件头需要添加下面这段:
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
bool linkAccess(int num)
{
//连接到数据库中,并输出数据库中的所有叶片名称
_ConnectionPtr pConnection;
if(pConnection.CreateInstance(__uuidof(Connection)) != S_OK)
{
return FALSE;
}
_bstr_t
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=leaf.mdb";
if(pConnection->Open(strConn, "", "", adModeUnknown) == S_OK)
{
//连接数据库成功
_RecordsetPtr pRecordset;
if(pRecordset.CreateInstance(__uuidof(Recordset)) != S_OK)
{
pConnection->Close();
return FALSE;
}
//下面四行练习的是如何将int->string
char buffer [33];
itoa(num,buffer,33);
string s(buffer);
string str="SELECT * from leaf where ID="+s;
//下面一行练习如何将string 转为char*
char *orig =const_cast<char*>(str.c_str());
//下面一行练习如何将char* 转为_bstr_t
_bstr_t strSql(orig);
//上面这么多行的目的就是将num添加到string中,变为_bstr_t
变量
HRESULT hr = pRecordset->Open(strSql, _variant_t((IDispatch*)pConnection, TRUE), adOpenUnspecified, adLockUnspecified, adCmdUnknown);
if(hr != S_OK)
{
pConnection->Close();
return FALSE;
}
_variant_t vt;
pRecordset->MoveFirst();
while(!pRecordset->adoEOF)
{
vt = pRecordset->Fields->GetItem("名称")->Value;
cout<<_com_util::ConvertBSTRToString((_bstr_t)vt)<<endl;
vt = pRecordset->Fields->GetItem("介绍")->Value;
cout<<_com_util::ConvertBSTRToString((_bstr_t)vt)<<endl;
pRecordset->MoveNext();
}
pConnection->Close();
return TRUE;
}
else
{
cout << "数据库连接失败!" << endl;
return FALSE;
}
}