C++ Builder动态设定odbc数据源

本文以access为例

需要文件 odbcinst.h(bcb或vc的include目录) odbccp32.dll(winnt\system32\目录) implib.exe(通过dll生成lib库) coff2omf.exe (将coff库转化为omf库)

首先将上面文件拷贝到工程目录,执行下面命令:

implib.exe odbccp32.lib odbccp32.dll

coff2omf odbccp32.lib

下面程序的功能为当应用程序启动时,动态添加/修改一个指向当前目录的,名为test的系统数据源。

新建一个工程,在工程主文件(含有winmain函数)中添加

#include <odbcinst.h>

uselib("odbccp32.lib");//lib在工程当前目录

修改后的代码如下;

//---------------------------------------------------------------------------
#include <vcl.h>
#include <odbcinst.h>
#pragma hdrstop
useform("main.cpp", form1);
//工程的其他单元申明.....
uselib("odbccp32.lib");
//---------------------------------------------------------------------------
winapi winmain(hinstance, hinstance, lpstr, int)
{
     try
     {
         application->initialize();
         ansistring data,datapath,dbpath;
         unsigned char temp[255];//接收转化后的连接字符串
         lpstr ch;//字符串指针相当于char *
         datapath=getcurrentdir();//获取当前目录
         data=datapath+"\\test.mdb\b";//假定当前数据库为test.mdb
         dbpath="dsn=test\bdbq="+data+"defaultdir="+datapath+"\b\b";
          //构造odbc连接字符串,test为数据源名,非法字符先用\b代替

         ch=dbpath.c_str();//将ansistring转化为字符串
          int i=0;
         while(*ch!='\0')//查找并替换非法字符,并装入字符数组
         {
          if(*ch=='\b')
          *ch='\0';
          temp[i]=*ch;
          ch++;
          i++;
         }

         if(::sqlconfigdatasource(null,odbc_add_sys_dsn,(lpstr)"microsoft access driver (*.mdb)\0",(lpstr)temp))//修改或添加数据源,如果成功,程序正常启动
        {

         application->title = "动态设定odbc数据源";
         application->createform(__classid(tform1), &form1);

         application->run();
         }
         else
         {
          showmessage("数据库设定失败!");
          application->terminate();
         }
     }
     catch (exception &exception)
     {
         application->showexception(&exception);
     }
     return 0;
}

时间: 2024-10-31 07:15:45

C++ Builder动态设定odbc数据源的相关文章

通过Java动态创建ODBC数据源来访问DBF文件

通过Java动态创建ODBC数据源来访问DBF文件,需要用到registry,来修改注册表. 其实,主要是动态创建ODBC数据源,开始很简单,可以手工设置一次数据源,当然也可以通过程序直接生成,问题都不大.下面只说怎样修改. import com.ice.jni.registry.RegStringValue; import com.ice.jni.registry.Registry; import com.ice.jni.registry.RegistryKey; public class T

在DELPHI程序中动态设置ODBC数据源

在DELPHI数据库应用程序中,我们访问数据库通常有两种方法.一种是通过BDE数据库搜索引擎,即利用DELPHI自带的数据库驱动程序,这种方法的优点是速度快,但应用范围有限,当数据库版本更新时,有可能不能用于操作新的数据库:另一种方法是通过ODBC,这种方法的优点是可以随操作系统(如WINDOWS)提供,作为标准接口能适应多种数据库,缺点是速度慢.在编程时,我们可以根据需要选择其中的一种方法. 在利用ODBC访问数据库时,通常的方法时是在ODBC管理面板中设置一个ODBC系统数据源 (系统DSN

关于ODBC数据源连接文本

odbc|数据|数据源 关于ODBC数据源连接文本 在<外部数据库的连接原理>一讲中我们说过,ODBC提供对多种数据库的支持,如dBase.Access.MS SQL Server及Oracle,也就是说运用ODBC数据源中所提供的连接代码,我们可以实现对多种数据库的连接.以连接Access数据库为例,ODBC数据源连接文本的格式是: "Driver={数据库驱动程序};Dbq=数据库文件;" 在以上连接文本中,如果数据库跟程序在同一目录下,或者用变量DefaultDir指

几种注册 ODBC数据源的方法

odbc|数据|数据源 几种注册 ODBC数据源的方法 国防科大 丁 浩 ODBC(Open Database Connectivity,开放式数据库互连)是一种应用程序接口 (API) 规范.它定义了一个标准例程集,使用它们应用程序可访问数据源中的数据.应用程序通过引用 API 的函数可以直接使用 ODBC,或利用数据访问对象 (DAO) 或远程数据对象 (RDO) 来使用ODBC.但是,在实现ODBC时,我们必须首先配置ODBC环境,进行数据源的注册,这样才能在对数据库进行编程时,对数据源进

搞定C# 建立ODBC数据源

odbc|数据|数据源 你观察就可以发现用windows控制面板的工具建立ODBC数据源就是在注册表中建立相应的值.下面的函数可以建立SQL Server的ODBC数据源!可以自己观察注册表,修改一部分值!/// <summary>        /// 注册odbc数据源        /// </summary>        /// <param name="DsnName">ODBC数据源名称,这里要与SQL Server数据库名保持一致&l

vb神童教程(续)--ODBC数据源简介

本文欢迎非商业用途的转载,但需要注明出自"编程入门网"及相应的网址链接. ODBC(开放式数据库连接)是一种应用程序的接口(API).这种接口提供了独立于任何的数据管理系统编写应用程序的能力.OCBC通过ODBC驱动程序提供了对不同的数据库供应商的一组应用程序接口来给特殊的数据库管理系统(DBMS).用户的应用程序使用这组API来调度ODBC驱动程序.然后驱动程序通过SQL语句同DBMS发生联系. 下面我们开始介绍ODBC数据源.在"我的电脑"中打开"控制

Win8系统中的ODBC数据源是什么?

  ODBC(开放式数据库连接)是一种应用程序的接口(API).这种接口提供了独立于任何的数据管理系统编写应用程序的能力.OCBC通过ODBC驱动程序提供了对不同的数据库供应商的一组应用程序接口来给特殊的数据库管理系统(DBMS).用户的应用程序使用这组API来调度ODBC驱动程序.然后驱动程序通过SQL语句同DBMS发生联系. 下面我们开始介绍ODBC数据源.在"控制面板系统和安全管理工具"中,即可见ODBC数据源图标. 双击打开ODBC数据源管理器,如下图所示: ODBC数据源管理

jsp中javabean数据库连接(用ODBC数据源)

问题描述 数据库是sqlserver2000我配置了ODBC数据源dcxtdatabase.java中.............Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Stringurl="jdbc:odbc:dcxt";conn=DriverManager.getConnection(url,"sa","111111");................连接不上!不知道是什

win7 64位下 excel 连接odbc 数据源报错,32位下可以正常

问题描述 win7 64位下 excel 连接odbc 数据源报错,32位下可以正常 odbc数据源32位 excel 32位 配置的odbc数据源如图所示 在excel中 连接到odbc数据源 这种错误怎么解决 解决方案 你选错驱动了,这是Oracle的驱动,不是Access的. 解决方案二: WIN7 64位 ODBC连接Oracle 32位报错问题