怎么用ado打开带密码的access数据库

类别:VC语言 点击:0 评论:0 推荐:

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

                                                                                         可以发邮件讨论

                                                                                             [email protected]

  

本文地址:http://com.8s8s.com/it/it1006.htm