ADO无法连接access数据库问题
我写了一个mfc程序,是sdi的。视图是Cformview的派生类。
我想实现任意连接数据库的功能。所以在视图上添加了一个按钮。点击按钮,打开对话框选择数据库进行连接。代码如下所示:
我先在stdafx.h文件中加了这句代码:
#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")
接着我在CFormView的派生类中定义
// 定义ADO连接、命令、记录集变量指针
_ConnectionPtr m_pConnection;
_CommandPtr m_pCommand;
_RecordsetPtr m_pRecordset;
然后在CMy3App中定义
// 定义ADO连接变量指针
_ConnectionPtr m_pConnection;
接着在BOOL CMy3App::InitInstance()中添加如下代码:
// 初始化COM,创建ADO连接等操作
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误。jingzhou xu
if(SUCCEEDED(m_pConnection.CreateInstance(__uuidof(Connection) )))
{
m_pConnection->CursorLocation=adUseClient; //游标类型
}
最后在视图类的onbutton事件中添加如下代码:
void CMy3View::Onbutton()
{
CString dstSrc,Src,trc;
Src="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
CFileDialog fileDlg(TRUE);
if(IDOK == fileDlg.DoModal())
{
dstSrc = fileDlg.GetPathName();
}
dstSrc.Replace("\\", "\\\\" );
trc=Src+dstSrc;
_bstr_t q;
q=trc;
try
{
// 打开本地Access库
m_pConnection->Open(q,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库是否在当前路径下!");
}
}
不知道哪里有问题,每次总是显示("数据库连接失败,确认数据库是否在当前路径下!");
请大家指点一下,谢谢