在C++Builder中创建Access odbc数据源

原创 2003年07月02日 16:09:00

想用BDE导Access数据库,要创建ODBC 数据源。找了半天也没见着BCB写的代码,所以我改写了一个。如有不足处,请指正。 ========jianlinlong@163.net

/*
函数功能:创建Access ODBC数据源
输入参数:DSN--------所要创建的 Access ODBC数据源的名称
          strMDBFile-----------Access 库文件的完整路径
          strDesc---------这个数据源的描述
          strLoginUser---------登录strMDBFile所指的文件的用户名
          strPassword----------登录strMDBFile所指的文件的密码
返回值  :成功返回true, 否则会抛出Exception (这样写会不会有问题呀?)
用    法:
         (1)CreateAccessDSN("jll_access", "c://windows//desktop//starso.mdb");
         (2)CreateAccessDSN("jll_access2", "c://windows//desktop//starso.mdb", " ", "Admin", "ok_pwd");
注    意:
         #include <Registry.hpp>
         #include <memory>

         using namespace std;
*/
bool __fastcall CreateAccessDSN(const AnsiString& DSN,
                                const AnsiString& strMDBFile,
                                const AnsiString& strDesc = "no descript",
                                const AnsiString& strLoginUser = "",
                                const AnsiString& strPassword = "")
{
   auto_ptr<TRegistry> spReg(new TRegistry());
   spReg->RootKey = HKEY_LOCAL_MACHINE;  //设置根键值为HKEY_LOCAL_MACHINE
    //找到Software/ODBC/ODBC.INI/ODBC Data Sources
   if (spReg->OpenKey("Software//ODBC//ODBC.INI//ODBC Data Sources", true))
   {//注册一个DSN名称
       spReg->WriteString(DSN, "Microsoft Access Driver (*.mdb)" );
       spReg->CloseKey();
   }else{
    //创建键值失败
       throw Exception("增加ODBC数据源失败");
   }
   到或创建Software/ODBC/ODBC.INI/MyAccess,写入DSN配置信息
   if (spReg->OpenKey("Software//ODBC//ODBC.INI//" + DSN, true))
   {
      spReg->WriteString("DBQ", strMDBFile);//数据库目录,连接您的数据库
      spReg->WriteString("Description",  strDesc);//数据源描述
      char buf[MAX_PATH];
      ::GetSystemDirectory(buf, MAX_PATH);
      spReg->WriteString("Driver", AnsiString(buf) + "//odbcjt32.dll" );//驱动程序DLL文件
      spReg->WriteInteger("DriverId", 25 );     //驱动程序标识
      spReg->WriteString("FIL", "Ms Access;" );    //Filter依据
      spReg->WriteInteger("SafeTransaction", 0 );  //支持的事务操作数目
      spReg->WriteString("UID", strLoginUser);//用户名称
      spReg->WriteString("PWD", strPassword);//用户密码
      BYTE bData = 0;
      spReg->WriteBinaryData("Exclusive", &bData, 1);      //非独占方式
      spReg->WriteBinaryData("ReadOnly", &bData, 1 );       //非只读方式
      spReg->CloseKey();
   }else{
      throw("增加ODBC数据源失败");
   };
   //找到或创建Software/ODBC/ODBC.INI/MyAccess/Engines/Jet
  //写入DSN数据库引擎配置信息
    if (spReg->OpenKey("Software//ODBC//ODBC.INI//" + DSN + "//Engines//Jet", true))
    {
      spReg->WriteString( "ImplicitCommitSync", "Yes");
      spReg->WriteInteger("MaxBufferSize", 2048 );//缓冲区大小
      spReg->WriteInteger("PageTimeout", 10 );//页超时
      spReg->WriteInteger("Threads", 3 );//支持的线程数目
      spReg->WriteString("UserCommitSync", "Yes");
      spReg->CloseKey();
    }else{
      throw("增加ODBC数据源失败");
    }
    return true;
}

关于Win7 64中无法添加ACCESS ODBC数据源的解决

现象是只有SQL SERVER的驱动,没有其他任何驱动(个人分析是只有64位的驱动!) 附上解决方法:打开目录:“C:\Windows\SysWOW64”,双击该目录下的“odbcad32.exe”...
  • liups
  • liups
  • 2015年12月13日 15:29
  • 2597

创建新数据源:缺少Microsoft Access Driver(×.mdb)的解决办法

磕磕绊绊的终于敲完了实例2,在这个例子中遇到的最头疼的问题就是在创建新数据源的时候, 找不到Microsoft Access Driver(*.mdb)驱动程序,若要是半年前这可要把我愁死,不过现在不...
  • u010753613
  • u010753613
  • 2013年05月30日 21:42
  • 1947

win7-64位系统添加access的ODBC数据源的方法

转载(http://www.linuxso.com/windows/18912.html):                一般是控制面板-管理工具-数据源(ODBC),打开“ODBC数据源管理...
  • yongzhen150
  • yongzhen150
  • 2014年11月21日 13:40
  • 2372

如何建立ODBC数据源

  建立ODBC数据源对于在使用ASP对数据库进行操作时是必要的,虽然他很简单,却是必须的一步。现在我把他记录下来,防止以后我把这部分东西忘掉,也和广大初学者一起分享。首先进入控制面版的性能和维护部分...
  • sghgcn
  • sghgcn
  • 2008年02月09日 18:01
  • 10213

如何将Access数据库导出、导入!我用的是ODBC连接!

帮小弟一个忙啊,我在做毕业设计时,遇到一个问题!希望大虾帮忙解决一下!就是如何将Access数据库导出、导入!我用的是ODBC连接的!...
  • gaosujian
  • gaosujian
  • 2005年04月12日 17:41
  • 986

配置SQL Server的ODBC数据源

安装了SQL Server 2008之后,为了和学生信息管理系统的代码交互,所以要配置SQL Server的ODBC数据源。虽然只有简单的几步,但是遇到了不少问题。        第一步,运行SQL...
  • zjx86320
  • zjx86320
  • 2013年06月25日 16:47
  • 17785

MS ACCESS ODBC开放式接口连接字符串

MS ACCESS ODBC开放式接口连接字符串 标准链接: "Driver= {Microsoft Access Driver(*.mdb)};DBQ=C:\App1\你的数据库名.mdb;Ui...
  • flyuniverse_shell
  • flyuniverse_shell
  • 2012年04月14日 09:12
  • 3108

WIN7(64位)系统发现数据源ODBC里面没有配置access数据源连接&System, System32, Syswow64 概述

本机是win7 64位操作系统,做数据库实例时需要创建Access数据库的ODBC数据源,但是打开ODBC数据源后发现添加里面没有配置access的连接,如下图: 还会弹出以下问题框:      ...
  • lllljz
  • lllljz
  • 2015年08月17日 15:04
  • 1673

Win7下怎么建立ODBC数据源

怎么在win7下创建ODBC数据源 今天下午几番周折终于把Mysql5.1安装好了,以前我安装过5.0的,感觉自己在网上也找不到合适的连接数据库的驱动程序,既然老师找好了,那就卸载吧!这一卸载不要紧...
  • KuangYeYaZi
  • KuangYeYaZi
  • 2014年03月27日 22:27
  • 1032

在LabVIEW中动态配置ODBC数据源

在LabVIEW中动态配置ODBC数据源1  前言ADO作为Microsoft开发数据库应用程序的最新接口,是一种提供访问各种数据类型的连接机制。由于它提供了比 DAO和RDO更加灵活的技术和更为广泛...
  • laipin7
  • laipin7
  • 2007年08月05日 16:33
  • 4988
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在C++Builder中创建Access odbc数据源
举报原因:
原因补充:

(最多只允许输入30个字)