【vfp开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了vfp开源代码-注册数据库ODBC数据源的方法 - 互联网的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
注册数据库ODBC数据源的方法 注册数据库ODBC数据源的方法2010-06-02 1140注册数据库ODBC数据源的方法 我们在实现ODBC的时候必须首先配置ODBC环境进行数据源的注册。
这样我们才能够在对数据库进行编程的时候对数据源进行连接、访问和操作。
在本文中笔者将根据自己的研究和具体的编程实践给出一些目前一般文章尚未涉及到的解决
方案并给出验证的
代码实例。
同时对数据源注册的其它方法进行一次综述和总结。
1.关于ODBC Data Source Administrator一.手工配置的方法在进行数据库开发过程中为了达到配置ODBC进行DSN定义注册的目的微软给出了一个手工操作的解决方法。
在windows9X操作系统的控制面板中有一个名为ODBC数据源32位的图标这便是专门为用户提供的设置ODBC环境的程序ODBC Data Source Administrator。
不过在windows2000操作系统中上述的图标则在控制面板里面的管理工具里面。
这个用于设置ODBC环境的程序叫做Desktoop Drivers桌面驱动程序它支持好几种DBMSDatabase Management System即数据库管理系统。
使用该程序使得驱动程序定义了用户创建DSN需要指定的信息。
当用户想增加一个数据源和一个所需要的驱动程序时ODBC Data Source Administrator便在用户的使用中显示它的配置对话框这样用户可以配置特定类型的数据库。
大多数情况下在编写对数据库操作的程序中我们至少需要知道诸如数据库文件名、系统本的或远程、文件夹等数据同时要给数据源命名。
2.确定所定义数据源的类型用户可以定义以下三种类型的数据源1用户数据源-它是作为位于计算机本地的用户数据源而创建的并且只能被创建这个数据源的用户使用。
2系统数据源-它作为属于
计算机或系统而不是特定用户的系统数据源而创建的用户必须有访问权才能使用。
3文件数据源-它是指定到文件中作为文件数据源而定义的。
就是说任何已经正确地安装了驱动程序的用户皆可以使用这种数据源。
3.实际进行数据源注册的方法详解假设我们利用Microsoft Access已经在Cmyfile文件夹里创建了一个名为myexample.mdb的数据库文件现在我们就对其进行设置。
步骤如下1在Windows操作系统的控制面板里面找到ODBC数据源图标双击打开ODBC Data Source Administrator的交互界面。
2这时候我们将看到界面上有User DSN、System DSN和File DSN的选项。
我们可以根据自己的数据源的类型进行不同的选择。
在这里笔者已经创建的数据库文件是本机上的用户使用的所以这里选择User DSN。
3然后按下Add…按钮。
将出现Create New Data Source画面。
在此处为自己所要创建的数据源选择一个驱动程序此处我们的数据库文件例子是用Microsoft Access建成的所以我们选择了Microsoft Access Driver.mdb。
4按完成按钮后随即进入一个标题为ODBC Microsoft Access Setup的画面。
在Data Source Name一栏里面为所注册的数据源命一个名字我们就假设它叫mydatasource。
然后点击Database一项中的select按钮把我们的数据库文件选加进去此处我们的文件是Cmyfilemyexample.mdb。
而后按确定即可。
这样我们就完成了一个简单的ODBC数据源的注册。
当然在以上的步骤中用户可以根据自己的不同需要选择和设置不同的项。
上面的注册结束以后我们便可以在对数据库编程中对该数据库进行操作了。
比如在VC6.0中编写对之的应用程序。
在新建项目时利用向导当执行到Step 2of 6时选中数据库使用文件支持接着点入Data Source…。
进入后点中ODBC在该项的下拉框中便可以看到刚才注册时给数据源所命的名mydatasource表明注册成功。
二.利用RegisterDataSource的方法进行数据源注册在VB中对数据库进行编程时可以利用RegisterDataSource这一方法为ODBC数据源输入连接信息到Windows注册表中。
它的语法是RegisterDataSource DSNdriversilentattributes其中参数代表的含义分别为DSN是字符串表达式是在引用数据源描述信息块时所使用的名字。
例如如果数据源是一个ODBC远程数据库这就是服务器的名字。
如果是用户DSN则该字符串就是为要注册的数据源所命的名字。
Drive是字符串表达式表示ODBC驱动程序的名称。
它并不是ODBC驱动程序动态连接库DLL文件名。
例如SQL Server是驱动程序名而SQLSRVR.DLL是DLL文件名。
必须安装有ODBC及相应的驱动程序。
Slient是布尔类型值如果不想显示ODBC驱动程序对话框用以提示指定驱动程序的信息该值就为True如果希望显示ODBC驱动
程序对话框该值就为False。
如果silent为True那么attributes必须包含所有必需的指定驱动程序的信息。
Attributes是字符串表达式它是一个要添加到ODBC.INI文件中的关键字
列表。
各关键字是在用回车Chr13作分割符的字符串中。
至于Attributes所包含的参数如何设置我们将在下面给出ADDRESS SQL Server数据库
管理系统的网络地址驱动程序从此处检索数据。
DATABASE SQL Server数据库的名称。
DESCRIPTION数据源中数据的描述。
LANGUAGE SQL Server使用的区域语言。
NETWORK与常驻SQL Server及SQL Server驱动程序的平台连接的
网络库。
OEMTOANSI如果SQL Server客户机和SQL Server正在使用同一个非ANSI字符集允许将OEM字符集转换为ANSI字符集。
ON允许转换的有效值是YESOFF则是NO。
SERVER常驻数据源的网络计算机的名称。
TRANSLATIONDLL翻译在应用程序和数据源之间传递数据的DLL的名字。
TRANSLATIONNAME翻译在应用程序和数据源之间传递数据的翻译器的名称。
TRANSLATIONOPTION允许翻译在应用程序和数据源之间传递的数据。
USEPROCFORPREPARE不允许为SQLPrepare产生保存过程。
OFF不允许产生的有效值是NOON则是YES。
缺省值在安装对话框中设置的是YES。
编写程序时可以根据需要选择若干Attributes的参数进行设置。
例如仍然是上面的一个例子我们可以编写如下的VB程序实现与上面手工注册一样的目的。
程序清单如下Sub RegisterDataSourceDim strAttribs As String建造关键字字符串。
Cmyfilemyexample.l.mdb即是数据库文件名包含路径strAttribsDBQ_Cmyfilemyexample.mdb_Chr13OemToAnsiNo_Chr13SERVERSEQUEL_Chr13NetworkDBNMPNTW_Chr13DatabaseWorkDB_Chr13AddressSEQUELPIPESQLQUERY建立新的注册的DSN。
mydatasource即是为数据源命的名rdoEngine.rdoRegisterDataSourcemydatasource_Microsoft Access Driver.mdbTruestrAttribs End Sub Private Sub Form_LoadCall rdoRegisterDataSource相当于在主程序中调用rdoRegisterDataSource End Sub注意一般我们虽然按照上面的
代码进行了输入但运行时仍然报错这是因为我们没有对表示远程数据源的预定义对象rdoEngine进行引用。
为了在
代码中使用rdoEngine和远程数据对象必须先在引用对话框可以从工程菜单中得到中设置一个到Microsoft Remote Data Object 2.0对象库的引用否则在第一次引用rdoEngine对象时会导致编译错误。
三.利用对注册表合并的方法进行的注册1.思路根据ODBC数据源注册后对Windows注册表修改情况的研究我们可以发现这样的事实即我们所注册的数据源对Windows注册表的影响关键集中在HKEY_CURRENT_USERSoftwareODBCODBC.INI里。
假设我们首先用手工的方法注册一个数据源数据源命名为mydatasource数据库文件Cmymyexample2.mdb我们可以发现
系统注册表有下面的变化HKEY_CURRENT_USERSoftwareODBCODBC.INIODBC Data SourcesMS Access DatabaseMicrosoft Access Driver.mdbdBASE FilesMicrosoft dBase Driver.dbfExcel FilesMicrosoft Excel Driver.xlsVisual FoxPro DatabaseMicrosoft Visual FoxPro DriverVisual FoxPro TablesMicrosoft Visual FoxPro DriverdBase Files-WordMicrosoft dBase
VFP Driver.dbfFoxPro Files-WordMicrosoft FoxPro
VFP Driver.dbfMicrosoft ParadoxMicrosoft Paradox Driver.dbmydatasourceMicrosoft Access Driver.mdbHKEY_CURRENT_USERSoftwareODBCODBC.INImydatasourceDriverCWINDOWSSYSTEModbcjt32.dllDBQcmymyexample2.mdbDriverIddword00000019FILMS AccessSafeTransactionsdword00000000UIDHKEY_CURRENT_USERSoftwareODBCODBC.INImydatasourceEnginesHKEY_CURRENT_USERSoftwareODBCODBC.INImydatasourceEnginesJetImplicitCommitSyncMaxBufferSized
word00000800PageTimeoutdword00000005Threadsdword00000003UserCommitSyncYes这样我们导出HKEY_CURRENT_USERSoftwareODBCODBC.INI每次以之为模板参照上面的例子把所要注册的数据源信息加入上面的注册表导出文件的对应位置而后再将该文件与系统注册表合并即可。
2.注册表合并的具体操作对注册的操作我们千万要小心否则后果不堪设想。
所以每次验证操作前我们最好对注册表做一个备份。
下面就介绍合并的具体操作。
首先我们要弄清楚Regedit以及其参数的含义。
Regedit是打开系统注册表的命令。
在开始运行中输入即可。
它的三个参数我们要辨认清楚。
Regedit/e myfile.reg表示把注册表文件导出到myfile.reg文件中相当于复制整个注册表文件到myfile.reg中。
Regedit/c myfile.reg表示把myfile.reg导入
注册表相当于用该文件的内容覆盖了注册表的内容。
Regedit/s myfile.reg表示把myfile.reg文件的内容与注册表文件的内容进行合并。
我们所关注的是最后一项将文件与注册表合并。
这样便为我们提供了一个思路。
我们只需在注册表中将有用的部分导出而后将所要注册的数据源的信息加入再与系统注册表合并就可以了。
这个合并的过程我们可以手工输入来实现。
也可以在编程中实现自动合并。
下面我们以
VB编程为例利用shell函数实现合并。
步骤如下1我们假设已经导出有用部分的注册表信息到文件cmyreg.reg里。
2对cmyreg.reg进行编辑把所要注册的数据源信息加入到文件cmyreg.reg里。
3在VB的编程主窗体中加入三个按钮导出注册表、合并注册表、导入注册表。
4程序
代码Private Sub Command1_ClickShellregedit/e cmyfile.reg1导出系统注册表文件到cmyfile.reg里作为备份End Sub Private Sub Command2_ClickShellregedit/s cmyreg.reg1将经过修改已经加入了数据源信息的文件cmyreg.reg与系统注册表合并End Sub Private Sub Command3_ClickShellregedit/c cmyfile.reg1验证完毕后将以前备份的系统注册表文件cmyfile.reg导入系统注册表End Sub注意为了防止误操作一定要将系统注册表作一次备份。
上面试验的结果可以通过对数据库编程来进行验证。
四.小结当然还有一些方法可以实现对ODBC数据源注册的操作。
一般可以分为以下几点1.编程实现对注册表的访问和修改根据上一部分的思想可以通过编程实现对注册表的直接操作来添加、修改数据源的注册信息。
象在VC中可以使用MFC访问注册表VB、PowerBuilder、CBuilder、
Delphi等编程语言也均提供了对注册表访问和修改的语句和函数另外利用Windows中提供的API函数也可以实现访问注册表。
熟悉此方面编程的不难做到这一点。
2.利用编程的方法实现安装程序自动将数据源信息添加到ODBC通过分析注册的原理和过程在对安装程序进行编程过程中加入注册信息使得在安装过程中可以自动 实现将数据库DSN的响应信息添加到ODBC中。
比如在目前流行的安装工具Installshield5.0中就可以完成这一过程。
根据不同的编程语言所作的对数据库连接的编程语句在Installshield5.0程序中加入注册信息就可以了。
3.利用文件操作实现对注册表文件的读写操作通过编写相应的对注册表文件的打开、读、写程序。
实现在注册表中具有交互性质的增删数据源注册信息的操作。
当然现在还有其它的一些应用工具可以实现对ODBC数据源的注册。
可以根据不同的需求进行选择来使用。
上面笔者给出了一系列关于ODBC数据源注册的详细的解决方法。
所给出的实例均已经在实际操作应用中实现。
不过从安全的角度考虑笔者还是首推利用在Windows控制面板中的ODBC数据源管理工具来进行数据源注册。
以免因对注册表的不熟或疏忽造成不必要的损失。