2、利用ADO技术访问数据库2.1 ADO技术简介ADO(ActiveX Data Objects)是Microsoft为OLE DB设计的应用层接口,它为一致的数据访问接口提供了良好的扩展性而不局限于单一的数据源。
ADO接口编程模型中包括连接(Connection)、命令(Command)、参数(Parameter)、记录集(Recordset)、字段(Field)、错误(Error)、属性(Property)、集合(Collection)、事件(Event)等元素。其中Connection、Command、Recordset是三个主体对象,Parameters、Fields、Errors、Properties是四个集合对象[5]。
ADO的一般操作方式为:1连接到数据源;2指定访问数据源的命令;3执行命令;4将命令执行后产生的结果保存在缓存中;5更新数据库。ADO的主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少[6]。
2.2 LabVIEW中对ADO的调用ADO对象在LabVIEW中是以ActiveX对象的形式提供的。LabVIEW自4.1版本就引入了支持ActiveX自动控制的功能模块,在5.1版本之后支持客户和服务器双方,即虽然程序是在双方各自独立存在,但它们的信息是共享的。这种信息共享是通过客户端使用由服务器端发布的ActiveX控件来实现的。
图1展示的是LabVIEW中使用ActiveX控件的程序流程。ActiveX对象的打开和关闭是通过打开自动化节点(Automation Open)和关闭自动化节点(Close Reference)来实现的,属性的设置和获取则通过属性节点(Property Node)进行,而调用节点(Invoke Node)用于对象方法的调用。其中关键的是第二步,只有充分的利用“属性”和“方法”的设置才能成功地实现对数据库的访问[7]。
图1 LabVIEW中使用ActiveX控件的程序流程图 2.3应用实例(1)建立ADO对象
在前面板控件模板的Refnum子模板中选择Automation Refnum项,把它拖放到前面板上,在其右键菜单中选择Select ActiveX Class>>Broswer…,弹出Select ActiveX Object对话框,在类型库Type Library下拉列表中选择Microsoft ActiveX Data Objects 2.7 Library Version 2.7,在下面的对象Objects列表栏中出现这个库对LabVIEW可用的对象,选中Connection对象,点击OK按钮即可。使用同样的方法可以建立Command、Recordset等对象。
(2)连接到数据源
在程序框图功能模板中选择Communication>>ActiveX子模板,选择其中的Automation Open与ADODB._Connection相连即可打开Connection对象。接着从ActiveX子模板中选择Invoke Node并与Automation Open相连,在其上单击右键选择Methods>>Open,即出现图2中所示的节点。其中“ConnectionSring”是连接到数据源的字符串,“UserID”和“PassWord”是连接到数据源的用户名和密码,正确设置这些参数后便可连接到数据源。
(3)生成SQL命令、执行命令
与上一步相同,用 Invoke Node调用Connection对象的Execute方法执行所要的操作。Execute方法所必需的参数为CommandText,这里为所要执行的SQL语句。例如可以使用Create命令创建表,用Drop命令删除表,用Insert命令向表中插入数据,用Select命令进行查询并返回操作结果等[8]。本例使用Create命令创建了一个名为Staff的表,包括编号、姓名和年龄三个字段,其中id字段为主键,自动编号。对数据表的删除和添加数据的操作过程与建表过程类似。如果要对执行后的记录进行显示或读取字段值则需要建立Recordset对象,并与Execute相连。
(4)关闭连接
对数据库访问操作完毕后要及时关闭连接对象以释放内存和所用的系统资源。首先使用Connection对象的Close方法关闭数据库连接,然后使用Close Reference关闭ActiveX自动化参数号。
图2 数据库中建表的程序框图 3、利用LabSQL访问数据库3.1 LabSQL简介LabSQL是一个免费的、多数据库、跨平台的LabVIEW数据库访问工具包,由Premkc Development公司的Chris Roth和Jeffrey Travis开发。目前的最新版本是LabSQL Release 1.1a,可以到网站[url=http://jeffreytravis.com/]http://jeffreytravis.com免费下载。LabSQL支持Windows操作系统中任何基于OBDC的数据库,包括Access,SQL Server,Oracle,Pervasive,Sybase等。[/url]
LabSQL利用Microsoft ADO对象和SQL语言来完成数据库访问,将复杂的底层ADO及SQL操作封装成一系列的LabSQL VIs,简单易用。 LabSQL VIs按照功能可以分为四类:Command VIs,Connection VIs,Recordset VIs和Top Level VIs。
Command VIs的功能是完成一系列的基本ADO操作,例如,创建或删除一个Command,对数据库的某一个参数进行读或写等。
Connection VIs的功能是管理LabVIEW与数据库之间的连接。
Recordset VIs用于对数据库中的记录进行各种操作,例如,创建或删除一条记录,对记录中的某一个条目进行读或写等。
Top Level VIs属于顶层的LabSQL应用,对前三类LabSQL VIs某些功能的封装,例如,SQL Execute.vi可用于直接执行命令[9]。
3.2 LabSQL应用实例本应用实例是向数据表添加记录,所使用的数据源与上例相同,数据表为staff表。具体步骤如下:
第一步:建立与数据库的连接。首先通过ADO Connection Create.vi创建一个Connection对象,然后利用ADO Connection Open.vi建立与数据库的连接。数据库由ADO Connection Open.vi的ConnectionString指定,此参数由前面板的字符串控件提供,如图3所示。
第二步:生成SQL命令,执行命令。在前面板table控件中输入表名,name和age控件中输入字段值。在程序框图中使用Format Into String生成SQL命令,将它连接到ADO Connection Execute.vi即可执行,同时可在前面板Command Text控件中显示此命令。
第三步:断开与数据库之间的连接。利用ADO Connection Close.vi关闭Connection对象,并使用ADO Connection Destroy.vi删除Connection对象。
图3 向数据表添加记录的前面板 图4向数据表添加记录的程序框图 4、利用LabVIEW SQL Toolkit访问数据库4.1 LabVIEW SQL Toolkit简介LabVIEW SQL Toolkit(又被称作为LabVIEW Database Connectivity Toolset)是用于数据库访问的附加工具包,它集成了一系列的高级功能模块,这些模块封装了大多数的数据库操作和一些高级的数据库访问功能[10]。其主要的功能如下:
(1)支持ADO所支持的所有的数据库引擎;
(2)支持所有与ODBC或OLE DB兼容的数据库驱动程序;
(3)具有高度的可移植性,在任何情况下,用户通过改变DB Tools Open Connection VI的输入参数Connection String就可以更换数据库;
(4)可以将数据库中Column Values的数据类型转换为标准LabVIEW Database Connectivity Toolset的数据类型,这进一步增强了它的可移植性;
(5)与SQL兼容;
(6)不使用SQL语句就可以实现数据库记录的查询、添加、修改以及删除等操作;
(7)用户可以完全不需要学习SQL语法。
用户可以使用LabVIEW SQL Toolkit在LabVIEW中支持ODBC的本地或远程数据库,例如Microsoft Access,Microsoft SQL Sever,Sybase SQL Server以及Oracle等[11]。
|