经常有人在网上问到怎么使用ado来打开带有密码的access数据库,下面我来详细介绍使用udl文件来打开带有密码的access数据库。
假设access数据库文件client.mdb打开密码是“cxw”。
第一步:建立udl文件
在win2000下新建一个文本文件test.txt,然后将文件后缀改为.udl。双击文件打开test.udl出现如下对话框:
图1
在上面的对话框中选择数据库的驱动,我们选择access2000的驱动Microsoft Jet 4.0 OLE DB Provider,点击“Next>>”进入如下图所示对话框:
图2
首先选择数据源文件,点击“...”按钮选择access数据库文件。在Username编辑框中输入用户名Admin(access数据库的用户名是固定的),选中“Blank password”。其他保持默认值,进入“All”页面如下图所示:
图3
在上图中选中“Jet OLE DB:Database Password”,点击“Edit Value...”按钮输入access数据库client.mdb的密码“cxw”,点确定退出。再在上图的对话框中选中“Persist Security Info”,点击“Edit Value...”选择false。其他保持默认值。这样udl文件已经设置完毕,我们可以进入“Connection”页面(如图2),在对话框中点击“Test Connection”可以测试连接是否成功,测试成功就表明udl文件已经成功建立。
第二步,建立ado连接
首先在stdafx.h文件中加入:
#pragma warning (disable: 4146)
#import "c:\Program Files\Common Files\system\ado\msado15.dll"
no_namespace rename("EOF", "EndOfFile")
#pragma warning (default: 4146)
而且还要注意这段话的位置,要在stdafx.h中所有include语句的后面
由于ado是com组件,因此在应用程序的开始要初始化com环境:
::CoInitialize(NULL);
然后在需要连接数据库的代码出加入如下代码:
_ConnectionPtr m_pDBConn;
m_pDBConn.CreateInstance(__uuidof(Connection)); //创建com对象
m_pDBConn->ConnectionString ="File Name=c:\\mydir\\test.udl";
try{
m_pDBConn->Open("","","",NULL);
}catch(_com_error &e){
//处理异常的代码
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
m_pDBConn=NULL;
}
这样就已经使用udl文件建立了ado连接,使用udl文件连接数据库的优点是:
当你连接的数据库名称或者用户名密码等发生变化时,你只需要更改一下udl文件即可,不需要修改你的源程序,当然更不需要重新编译了。
最近在网上看见有网友评论用udl文件密码会暴露,经过验证确有此事。所以可以用下面的方法来解决:
m_pDBConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=client.mdb;Persist Security Info=False;Jet OLEDB:DataBase Password=cxw","","",adModeUnknown);
可以发邮件讨论