经常有人在网上问到怎么使用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{

    最近在网上看见有网友评论用udl文件密码会暴露,经过验证确有此事。所以可以用下面的方法来解决:

m_pDBConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=client.mdb;Persist Security Info=False;Jet OLEDB:DataBase Password=cxw","","",adModeUnknown);