LZ你好,我最近在学习MFC下访问数据库,按照参考书以及网上的一些资料用例子程序练手,现在遇到一个问题就是数据库显示已连接,但就是库里的表连不上。看了两天还是找不出问题在哪,主要代码如下:
头文件中已经添加对ado的支持,类里也添加了变量声明
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
然后在MFC对话框的初始化函数里写入以下代码:
AfxOleInit();
try
{
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=Demo.mdb","","",-1);
if(m_pConnection->State==TRUE)
m_list1.AddString("数据库连接成功!");
else m_list1.AddString("数据库连接失败!");
}
catch(_com_error *e)
{
AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!");
return FALSE;
}
到这里为止程序都是可以执行的,运行时显示数据库已连接成功了,但是再往下连接表时就出问题了,表连接按钮内的代码:
try
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("SELECT * FROM DemoTable",
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
if(m_pRecordset->State==TRUE)
AfxMessageBox("表连接成功!");
else AfxMessageBox("表连接失败!");
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
然后运行程序后点击连接按钮后就报错

由于代码都是参考书以及网上资料里的,我是拿来做练习的,所以不是很清楚问题出在哪,不知楼主能否解答一下,不胜感激!