ITPub博客

首页 > 数据库 > 数据库开发技术 > 在C++Builder中创建Access odbc数据源 (转)

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

原创 数据库开发技术 作者:amyz 时间:2007-11-13 14:47:48 0 删除 编辑
在C++Builder中创建Access odbc数据源 (转)[@more@]

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

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

  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 spReg(new TRegistry());
  spReg->rootKey = HKEY_LOCAL_MACHINE;  //设置根键值为HKEY_LOCAL_MACHINE
  //找到SoftwareODBCODBC.INIODBC Data sources
  if (spReg->OpenKey("SoftwareODBCODBC.INIODBC Data Sources", true))
  {//注册一个DSN名称
  spReg->WriteString(DSN, "microsoft Access driver (*.mdb)" );
  spReg->CloseKey();
  }else{
  //创建键值失败
  throw Exception("增加ODBC数据源失败");
  }
  到或创建SoftwareODBCODBC.INIMyAccess,写入DSN配置信息
  if (spReg->OpenKey("SoftwareODBCODBC.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数据源失败");
  };
  //找到或创建SoftwareODBCODBC.INIMyAccessEnginesJet
  //写入DSN数据库引擎配置信息
  if (spReg->OpenKey("SoftwareODBCODBC.INI" + DSN + "EnginesJet", 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;
}


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752019/viewspace-982254/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3984
  • 访问量
    7339084