0
在LabVIEW中动态配置ODBC数据源
2008-10-21 09:09:32 admin 浏览:1963次 【

1  前言

ADO作为Microsoft开发数据库应用程序的最新接口,是一种提供访问各种数据类型的连接机制。由于它提供了比 DAORDO更加灵活的技术和更为广泛的应用,各种高级语言都用它来编制数据库应用程序。LabVIEW作为目前最流行的虚拟仪器开发工具之一,通过ActiveX控件技术来支持利用ADO技术来访问数据库,较之价格昂贵的SQL ToolKit for LabVIEW和编程复杂的DLLADO技术是LabVIEW访问数据库最理想的方式,它不仅编程简单,而且支持多种类型的数据库。

ADO是通过DSN(数据源名)来访问数据库的。DSN是应用程序用以请求一个连到ODBC数据源的连接(CONNECTION)名字,它隐藏了诸如数据库文件名、所在目录、数据库驱动程序、用户ID、密码等细节。当建立一个连接时,不用去考虑数据库文件名、路径等等,只要给出它在ODBC中的DSN即可。因此,在使用ADO访问数据库前,先要配置ODBC数据源,即建立DSN与数据库文件名、所在目录、数据库驱动程序、用户ID、密码之间的对应关系。在一般情况下,可以用Windows系统下ODBC数据源管理器手动完成ODBC数据源的配置。可是,当改变数据源位置或者要将程序(包含数据源)安装到其他计算机上时,必须重新配置ODBC数据源,这样做不仅麻烦,而且给用户使用应用程序带来了困难。在一些高级语言中(VBC++)可以通过数据库引擎或在注册表中创建ODBC数据源键值的方法来实现ODBC数据源的自动配置。由于LabVIEW中没有提供数据库引擎或者类似的工具来完成ODBC的动态配置,因此第一种方法不能实现;第二种方法,虽然在LabVIEW中可以实现,但是无论是用VC编写相关的DLLLabVIEW调用还是直接用LabVIEW提供的注册表操作函数创建键值,都会带来相当复杂的编程,而且还要求编程人员熟知注册表的相关知识,这些对编程人员来说是一个负担。

下面我们介绍怎样通过导入注册表文件并修改部分键值的方法来实现ODBC数据源动态配置,这种方法较之前面两种不仅可行而且编程简单,对注册表的知识也没有很高的要求。

 

2 导入注册表文件,动态配置ODBC数据源

不难发现,手动配置ODBC数据源实际上是将数据源的相关信息写入注册表,而应用程序又是通过注册表中的相关信息来访问数据源的。因此,只要将与手动配置相似的注册表信息导入到注册表中,并由程序控制注册表中的相关内容,就可实现ODBC数据源的动态配置。在LabVIEW中实现注册表的导入和修改并不是一件很困难的事,因此用这种方法进行其动态配置ODBC数据源是极为方便的。具体步骤如下:

第一步:准备要导入注册表的注册表文件(在这之前要完成手动配置ODBC 数据源)。

1)运行注册表编辑器,导出【HKEY_LOCAL_MACHINE\SOFTWARE\ ODBC\ODBC.INI\ ODBC Data Sources】关键字到tmp1.reg中。如果数据源为用户数据源,则导出【HKEY_CURRENT_USER SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources】关键字。

2)导出数据源的注册表信息到tmp2.reg中。假设手动配置的ODBC数据源名为”demo”,则导出的是【HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\demo】关键字。

3)合并上述两个注册表文件。用记事本打开tmp1.reg tmp2.reg,将两个文件中的注册表信息合并为一个注册表文件,另存为dsn.reg (保存在程序所在目录下)。本例合并后的dsn.reg内容为:

Windows Registry Editor Version 5.00

 

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources]

"demo"="Driver do Microsoft Access (*.mdb)"

 

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\demo]

"Driver"="C:\\WINDOWS\\system32\\odbcjt32.dll"

"DBQ"="F:\\demo.mdb"

"DriverId"=dword:00000019

"FIL"="MS Access;"

"SafeTransactions"=dword:00000000

"UID"=""

 

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\demo\Engines]

 

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\demo\Engines\Jet]

"ImplicitCommitSync"=""

"MaxBufferSize"=dword:00000800

"PageTimeout"=dword:00000005

"Threads"=dword:00000003

"UserCommitSync"="Yes"

4)修改dsn.reg。对于特定的数据源来说,要动态配置的项只有“DBQ”和“Driver”关键字。“Driver”指明ODBC驱动程序的位置。ODBC驱动程序(本例为odbcjt32.dll)一般在系统目录下的system32目录中,所以将dsn.reg中的“Driver”键值改为”%systemroot%\\system32\\odbcjt32.dll”,即可实现驱动程序的动态配置。“DBQ 项标识数据源的存放路径,在程序运行时,获得数据源存放数据路径后确定其键值,即可实现“DBQ”的动态配置。这里我们给“DBQ”键值为空值,待程序运行时在确定其值。修改后的“Driver”和“DBQ”为:

"Driver"="%systemroot%\\system32\\odbcjt32.dll"

"DBQ"=" "

其他项不发生改变。至此,准备工作完毕。

说明:本例中所使用数据库为Access数据库。对如不同的数据库驱动程序可能会有所不同,在手动配置时系统会根据数据源的类型自动选择适合的驱动程序。在确定“Driver”的键值时应注意驱动程序。

第二步:导入注册表信息和修改“DBQ”关键字键值。

在命令提示符下,执行“regedit /s dsn.reg”可以将dsn.reg“静态”导入到注册表中。在LabVIEW中执行相同的命令也能将dsn.reg导入到注册表中。【Function】→【communication】→【system exec.vi】可以执行各种命令,它的“command line”参数指定要执行的命令。【Function】→【Advanced】→【Windows Registry Access VIS】下提供各种各样的注册表操作函数,利用他们可以方便的创建,修改,查询,删除注册表项。具体用法可以参看 LabVIEW的帮助文档和实例。下面给出LabVIEW中导入注册表和修改“DBQ”关键字键值的程序框图如图1所示:

 

 

1  动态配置VI

图中红线框部分获取数据源所在路径,也可以通过文件对话框来获得数据源路径)

把这个VI 作为子VI在每次程序初始化时调用,即可实现ODBC 数据源的动态配置。为了证明这个方法的正确性,我们编写如下图2这个VI 来验证:

2  动态配置VI的应用实例

框图中动态配置子VI即为图1编写的动态配置VI。若把包含程序和数据源的目录移动到磁盘中的其他目录或者另一台没有配置ODBC数据源的系统上,程序仍能够没有异常地运行。本例在WinXP+LabVIEW 7.1,Win2000+LabVIEW7.0上运行通过。

 

3 结论

实例运行结果表明,程序能正确找到ODBC数据源,这说明用该方法能实现动态配置 ODBC数据源。与编写DLL和创建键值实现动态调用相比,导入注册表文件的方法编程简单,操作方便。通过导入注册表文件再修改部分键值,不失为LabVIEW中实现动态配置ODBC数据源的一种理想方法。

0 条评论
查看更多评论
  • 键盘快捷键描述按住Shift并单击选择多个对象;将对象添加到当前选择。按住Ctrl单击切换单个对象以加入或保留当前选择。方向键一次将所选对象移动一个像素。Sh..

    浏览:5209次 评论:0
    2021-02-06 09:23:02
  • Modbus是全球第一个真正用于工业现场的总线协议,采用的是主从原则,其物理接口主要有串口和以太网口两种。本文主要介绍LabIEW与PLC的通信实现方式。在进行通..

    浏览:12296次 评论:0
    2019-09-22 12:58:51
  • 对实时数据或者历史存储数据进行滤波及校准处理,可以将采样数据转化为具有实际意义的物理量,为用户后续操作提供方便。滤波校准功能的程序设计如图1所示,本..

    浏览:4578次 评论:0
    2019-09-21 16:32:59
  • 在进行LabVIEW程序设计时,一个VI中可以包含一个或若干个子vi。这些子vi是被直接放置在程序框图中,习惯上称这些子vi为:静态链接子vi。这些子vi在VI载入的同..

    浏览:11239次 评论:0
    2018-12-17 15:28:30
  • 新建一个LabVIEW项目,或者打开一个已经建好的项目,项目中包含主vi,子vi以及自定义控件等,确保vi运行正常。    在项目浏览器的-程序生成规范->..

    浏览:9014次 评论:0
    2018-07-18 10:55:21
作者专栏
  • NNN

    注册时间:2024-12-23 09:48:46

  • sltang

    注册时间:2024-12-21 15:45:59

  • samhuang63

    注册时间:2024-12-20 09:42:58

  • csq663347

    注册时间:2024-12-05 16:34:39

  • guohuiming

    注册时间:2024-11-14 08:49:44

Copyright@http://nilab.com.cn all rights reserved 备案号:京ICP备12043750号-1
Powered by qibosoft V9.0 Code © 2003-2017 qibosoft
LABVIEW之家 QQ:181237912; email:Labviewzj@qq.com 项目合作 微信及手机:18510627229