当前位置:文档之家› Labview中远程数据库访问技术

Labview中远程数据库访问技术

摘要:介绍了在Labview中应用ADO技术访问本地和远程数据库的方案。

对在局域网中以网络共享方式访问远程Access数据库进行了详细介绍,最后给出了应用该方法开发的一个实例。

关键词:LabviewADO远程数据库引言Labview是美国NI公司开发的一种图形化编程语言,其主要用于数据采集、仪器控制、过程监控等领域。

Labview具有丰富的采集与分析函数库,在Labview环境下可以方便快捷地开发监控系统软件。

现代监控系统一般构建于局域网内,且摘要:介绍了在Labview中应用ADO技术访问本地和远程数据库的方案。

对在局域网中以网络共享方式访问远程Access数据库进行了详细介绍,最后给出了应用该方法开发的一个实例。

关键词:Labview ADO 远程数据库引言Labview 是美国NI公司开发的一种图形化编程语言,其主要用于数据采集、仪器控制、过程监控等领域。

Labview具有丰富的采集与分析函数库,在Labview环境下可以方便快捷地开发监控系统软件。

现代监控系统一般构建于局域网内,且监控系统自身也是企业生产管理系统的一个子系统,因此不可避免地要访问本地或远程数据库。

Labview开发版中并没有提供直接与通用数据库接口的工具,但可以通过以下方法解决:购买NI公司开发的附加软件工具包;利用其它语言如VC++编写DLL访问数据库;利用ADO控件访问数据库。

[1]Labview支持Activex控件,与其它方法相比基于ADO技术构建本地或远程数据库访问接口不失为一种简单而又经济的方法。

1 ADO技术简介ADO(Activex Data Objects)是Microsot为OLE DB设计的应用层接口,它为一致的数据访问接口提供了良好的扩展性而不局限于单一的数据源。

ADO接口编程模型中包括连接(connection)、命令(command)、参数(parameter)、记录集(recordset)、字段(field)、错误(error)、属性(property)、集合(collection)、事件(event)等元素。

其中connection、command、recordset是三个主体对象,parameters、fields、errors、properties、是四个集合对象。

ADO的一般操作方式为:1 连接到数据源;2 指定访问数据源的命令;3 执行命令;4 将命令执行后产生的结果保存在缓存中;5 更新数据源。

ADO接口继承了OLE DB的高速性,可以高速访问本地或远程的数据源。

2在Labview 中使用ADO接口在Labview 中使用ADO接口访问数据库一般包括以下几个步骤:建立ADO控件;连接到数据源;生成SQL命令;执行命令;关闭连接。

具体步骤如图1 所示。

2.1建立ADO控件在前面板控件模板中选择Activex子模板单击Automation Refnum项,右键单击Select Activex Class的Browse从类型库中选择Microsoft Activex Data Objects 2.7 library Version 2.7,之后可以向框图程序中加入connection、command、recordset等对象。

2.2连接到数据源首先在Diagram中单击鼠标右键,从Function模板选择communication子模板,从中选择Activex项的Automation Open 与ADODB_Connection相连即可打开连接。

接着同样从communication子模板的Activex项中选择Invoke node (方法节点)并与Automation Open 相连,在其上单击右键选择methods项的Open方法即出现图1中所示的节点。

其中“Open”表示该节点为打开“连接对象”,“ConnectionString”是连接到数据源的字符串,“UserID”和“Password”是连接到数据源的用户名和密码,左侧小黑三角表示写入,可以采用字符串控件或字符串常量为其赋值。

图1 Labview 中访问数据库2.3生成SQL命令、执行命令采用与建立“打开连接”方法相同的步骤建立执行节点,如图1中所示:其中“Execute”右端的小三角表示读出,“CommandText”表示需要执行的SQL命令文本,该命令文本可由字符串控件或字符串常量赋值。

如果需要执行带参数的命令,则可以采用Labview提供的“格式化字符串生成子VI”(format into string)来定制生成所需要的SQL命令文本。

例如可以使用“Create”命令创建表,用“Drop”命令删除表,用“Insert”命令向表中插入数据,用“Select”命令进行查询并返回操作结果等(具体的操作命令格式可以参考相关的SQL语言手册)。

RecordsAffected返回一个长整型数值表示命令执行后受影响的记录集的数目。

若要对执行后的记录进行显示或读取字段值则需要建立“Recordset”对象,并与“Execute”相连然后再进行相关的操作。

2.4关闭连接对数据库访问操作完毕后要及时关闭连接对象以释放内存和所用的系统资源。

与建立连接对象的“Open”方法和“Execute”方法类似,先建立“Invoke Node ”选择“Close”方法关闭连接,从“Function”模板上单击“Communication”子模板选择“Activex”中的“Automation Close”项并连线。

图1中使用了一个顺序结构,目的是为了使访问数据库按一定的顺序运行,不致发生命令尚未执行完毕而关闭连接的错误。

3 访问远程数据库在Labview中访问远程数据库的途径有以下几种:(1)采用NI公司开发的数据库访问软件包实现对本地或远程数据库访问,该软件包需单独购买。

;(2)基于RDS技术构建客户端/服务器的远程数据库访问模式,该方案要求系统有数据库服务器如SQL Server 等,同时也要求对ADO RDS技术有深入的了解;(3)通过Web控件访问数据库访问页模式。

这种方案以网页浏览的方式交互的访问数据库访问页,对于监测系统而言其实时性难以满足,同时也需要借助其它语言如VBscr ip t 或JavaScript等。

如需要访问SQL Server则在连接字符串中设定相应的数据源以及远程计算机名和所要访问的数据库名即可实现。

考虑到目前监控系统大多处于局域网内且系统要求实时、高速地访问数据库,在Labview中以访问共享文件或网络驱动器中的远程数据库的方式实现远程访问因其简单、经济而具有较高的实际意义。

在局域网内以共享文件方式访问远程数据库的具体作法是在远程计算机中将数据库所在的文件夹或驱动器设为共享,在本地计算机应用程序中对远程计算机中的数据库文件进行读写、查询等操作。

所有的操作均在本地计算机中进行,远程计算机实际上只提供文件服务,因此要求本地机处理器有较强的能力。

[2]3.1本地连接字符串设定访问本地数据库时根据是否提供ODBC支持可以分为两种情况:(1)通过ODBC DSN连接;首先要在控制面板的“ODBC数据源”中设定数据源名称并指定要访问的数据库。

然后将“DSN=数据源名称”写入“ConnectionString”。

通过ODBC DSN 连接必须预先在控制面板中进行设定,而且应用程序只能访问特定的数据源,因此对程序移植和使用有一定影响。

(2)无ODBC DSN 连接;以连接到Access 数据库为例,向“ConnectionString”中写入以下字符串“Driver={Microsoft Access Driver(*.mdb)};Dbq=c:\somepath\mydb.mdb;Uid=admin;Pwd=”,其中“Driver”指定数据库驱动程序,“Dbq”指定要访问的数据库的路径;“Uid”和“Pwd”指定访问数据库时的用户名和密码。

无ODBC DSN连接可以在程序中根据需要随时指定数据源以及所需使用的驱动程序无需在控制面板中手动设置,这种方式便于程序移植和使用。

图2向远程数据库写入数据实例3.2远程连接字符串设定访问远程数据库步骤与访问本地数据库基本类似,差别之处在于数据源的设定有所不同。

在网络共享上访问Access 数据库时要在“ConnectionString”中指定数据源提供者为Microsoft Jet OLEDB Provider,应向“ConnectionString”中写入以下字符串“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\mysever\myshare\mypath\my db.mdb”其中“Provider”指定数据源提供者,“Data Source”指定数据库的路径。

“mysever”是远程计算机名或远程计算机的IP地址。

“myshare”是共享文件夹的名称,“mypath”是数据库文件的相对路径,“mydb.mdb”是被访问的远程数据库名称。

在确认上述各项设定正确无误且远程计算机共享打开后就可以向该远程数据库进行各项操作了。

[3]3.3访问远程数据库实例本实例由一个数据采集子VI采集生产现场一组数据,并将这些数据存在一个全局数组中,然后采用如图2所示的框图程序通过局域网络向名为“myserver”计算机中的一个Accesss数据库文件写入数据。

该文件名为“sampledatabase”位于共享名为“123”的文件夹中,“mytable”是该数据库文件的一个表格文件。

由于要向表格中写入一组数据,因此使用一个“for loop”结构并利用其对数组自动索引功能通过“format into string”子VI生成SQL命令文本依次向表格中写入数据。

经过一次循环可以向数据库中添加一条记录,该记录包含两个字段:数据编号和数据值。

如果是连续采集则可以将上述的程序置于一个“while”循环结构中,定时调用数据写入程序即可实现连续保存数据。

对于从远程计算机中读取数据库文件也可采用类似的方法,在此不再赘述。

4 结论实际证明,在Labview中基于ADO技术构建局域网环境下的,以网络共享方式实现对本地或远程数据库访问可以充分利用ADO的各种属性和方法,无需使用其它编程语言,无需增加系统成本,直接在Labview中实现高速、实时地访问数据库,是一种简单、经济而又具有实际意义的远程数据库访问方法。

相关主题