【VC++开源代码栏目提醒】:以下是网学会员为您推荐的VC++开源代码-在DELPHI程序中自动设置ODBC数据源 - 编程语言,希望本篇文章对您学习有所帮助。
在DELPHI程序中自动设置ODBC数据源 日期2004年9月14日 作者 人气4140 查看:大字体 中字体 小字体 在DELPHI数据库应用程序中我们访问数据库通常有两种方法一种是通过BDE数据库搜索引擎即利用DELPHI自带的数据库驱动程序这种方法的优点是速度快但应用范围有限当数据库版本更新时有可能不能用于操作新的数据库另一种方法是通过ODBC这种方法的优点是可以随操作系统如WINDOWS提供作为标准接口能适应多种数据库缺点是速度慢在编程时我们可以根据需要选择其中的一种方法 在利用ODBC访问数据库时通常的方法时是在ODBC管理面板中设置一个ODBC系统数据源系统DSN然后在DBD中或在程序中设置一个数据库别名Alias对应该DSN这样就可以如愿以偿地操作数据库了相信用DELPHI做过数据库应用的程序员对这方面已经很熟悉了笔者就不多说了在实际应用中笔者曾遇到过这样的情况我们的数据库应用程序是依靠ODBC系统数据源访问和操作数据库的应用程序运行一直良好直到某一天一个对WINDOWS系统较为熟悉但又不太精通的用户不慎修改或删除了我们预先设置的系统DSN...... 于是笔者就开始研究怎么在程序中动态地设置ODBC系统DSN的内容这样就可以增加自己程序的坚固性了经过整整一天对WINDOWS注册表的研究终于找到了ODBC管理程序设置DSN的秘密天地自有公道付出总会回报不是做广告现写出来与大家共享也请高手指教 ODBC管理程序设置DSN的秘密在注册表中不信可以到HKEY_LOCAL_MACHINESoftwareODBC去看看肯定让你感觉已经成功了一半 首先来看看系统中已安装的ODBC数据库驱动程序在HKEY_LOCAL_MACHINESoftwareODBC ODBCInst.INI中存放着已经安装了的ODBC数据库驱动程序的信息从这里可以查到已安装的ODBC数据库驱动程序对应的DLL文件等信息在ODBCInst.INIODBC Drivers的各个键值中键名是驱动程序名称如Microsoft Access Driver.mdb键值为“Installed”表示驱动程序已安装在 ODBCInst.INIDriverNameDriverName为一个驱动程序名称如Microsoft Access Driver.mdb中有驱动程序的详细信息我们主要从这里获得ODBC驱动程序对应的DLL文件的路径和文件名即键名Driver的键值一般为C:WINDOWSSYSTEMFileName.DLL 然后来看系统DSN的注册信息在HKEY_LOCAL_MACHINESoftwareODBCODBC.INI中存放着系统DSN的注册信息我们在ODBC管理面板设置的DSN参数就在这里 下面来看看创建一个ODBC系统DSN的步骤即我们在ODBC管理面板中完成参数设置后ODBC管理程序是怎么在注册表中注册DSN信息的以创建一个名称为MyAccess的Ms Access97类型的系统DSN为例我们指定的参数主要有数据库类型Microsoft Access Driver.mdb、数据源名称MyAccess、数据源描述我的ACCESS、数据库路径C:InetpubwwwrootTest.mdb其它参数如用户名称、用户密码、独占、只读、系统数据库、默认目录、缓冲区大小、扫描行数、页超时等采用系统缺省参数这时注册系统DSN一般应有以下几个步骤 在HKEY_LOCAL_MACHINESoftwareODBCODBC.INIODBC Data Sources中增加一个字符串键值为MyAccess Microsoft Access Driver.mdb其中分别为数据源名称和数据库类型这是在注册表中注册一个系统DSN名称 在HKEY_LOCAL_MACHINESoftwareODBCODBC.INI中创建一个子键SubKeyMyAccess即创建一个键为HKEY_LOCAL_MACHINESoftwareODBCODBC.INIMyAccess然后在其下创建一些键值详细描述一个系统DSN的配置信息主要信息有中的内容为笔者注释 DBQC:InetpubwwwrootTest.mdb 字符串表示数据库路径 Description我的ACCESS 字符串表示数据库描述 DriverC:PWIN98Systemodbcjt32.dll 字符串表示驱动程序可见ODBCINST.INI DriverId0x0000001925 数字表示驱动程序标识不能改变 FILMs Access 字符串可能与过滤Filter有关 SafeTransaction0x00000000 数字可能表示支持事务性操作的个数 UID 字符串表示用户名称此处为空字符串 在HKEY_LOCAL_MACHINESoftwareODBCODBC.INIMyAccess中创建一个子键SubKeyEngines再在其下创建子键SubKeyJet即