2023年11月23日发(作者:)

17.2 Database Connectivity 应用典型实例

17.2.1 Access中建立一个数据库

使用NI所提供的数据库工具包Database Connectivity只能操作数据库,但

是无法创建数据库,因此需要借助第三方数据库管理系统,Access等来创建

据库。首先我们建立一个的数据库文件。

打开Microsoft Access软件,单击文件>>新建,选择空数据库,保存到

文件夹下。创建方法如图17-11所示。

17-11Access中创建数据库表格

在利用Database Connectivity工具包操作数据库之前,需要先连接数据库,

连接数据库的方法有以下两种。

1 .利用DSN连接数据库

LabVIEW 数据库工具包基于 ODBC (Open Database Connectivity)技术,

在使用ODBC API函数之前,需要提供数据源名DSN (Data Source Names)

才能连接到实际数据库,所以需要首先创建DSNDatabase Connectivity工具

包与ODBC的关系如图17-12所示。

打开Windows控制面板>>管理工具,选择数据源,进入“ODBC数据源管

理器对话框,如图17-13所示。

F

:

Database

17-12 DB Tools ODBC 的关系

对话框

17-13 “ODBC数据源管理器

用户DSN”页面下创建的数据源只有本用户才能访问,在系统DSN”页面

下创建的数据源,该系统下的所有用户都可以访问。在此选择用户DSN”,单击

添加按钮,在弹出的创建新数据源对话框中选择

“Driver do Microsoft Access(*mdb)”,然后单击完成按钮,如图 17-14 所示。

随后弹出“ODBC Microsoft Access安装对话框,输入数据源名,如

“LSData”,然后单击选择按钮,选择建立好的数据库文件,单击'

按钮,如图17-15所示。

创建新数据源对话框

17-14

17-15 “ODBC Microsoft Access 安装对话框

完成以上配置后,就可以在用户DSN”页面下看到新创建的名为LSData

DSN 了。单击确定按钮可完成DSN的建立。

按照图17-16所示的程序框图编程,在DB Tools Open 的输

入参数Connection information输入创建的数据源名称LSData,运行该程序,

status并没有亮起示警,说明数据源可以正常连接。

Ofwwd+dvi

Cltit 匚中

17-16在程序中连接数据库

2 .利用UDL连接数据库

Microsoft还提供了另一种技术,即ActiveX数据对象ADO

(ActiveX Data Objects)技术。ADO Microsoft 提出的应用程序接口(API)

以实现访问关系或非关系数据库中的数据。ADO使用通用数据连接UDL

(Universal Data Link)来获取数据库信息,以实现数据库连接。

(注意文件的扩展名)所在的文件夹下单击鼠标右键,在弹出

快捷菜单中选择新建>>乂^5。计数据链接,如图17-17所示。命名新建的数

据库链接名称为o

I

巾眯

K快电方式

3

公文包

Hicrosoft

»

置相文档

d

Office Kcc4xi

应用程序

演示文结

而加压镯文件

a

文本文档

工作充

Wi wsssft Eke »1

17-17新建数据链接

双击打开文件,切换到提供程序页面,从中选择 “Microsoft

Jet 4.0 OLE DB Provided 设置完成单击下一步按钮,如图 17-18 所示。

切换到连接页面,在“1.选择或输入数据库名称文本框右侧,单击 按钮,

选择已经创建好的数据库。完成后单击测试连接按钮,弹出测试连接成功

话框,表示已经成功连接数据库,如图17-19所示。

"数据链接属性对话框

17-18

17-19成功连接数据库

完成后,按照图17-20所示的程序框图编程。DB Tools Open

的输入参数Connection Information输入前面所创建的UDL文件路径。运行该

VIstatus灯并无示警亮起,说明连接成功。

网]:■.后吐~|

4 sMnQivii

BE Qpftri Clm dsfWi*ti ja *

I du

苫]

17-20在程序中成功连接数据库

1 7.2.2数据库基本操作

连接上数据库后,就可以利用Database Connectivity的工具包对数据库进

行操作了。本节介绍数据库中比较常用的几种基本操作,包括创建表格、删除表

格、添加记录、查询记录等。

2 .创建表格

数据表中的每一行表示一个记录,在工具包中用Record来表示;每一列表

示记录中的一个字段,在工具包中用Field表示。能够标识表中某一行的属性或

属性组称做主键,一个表只能拥有一个主键,但可以有多个候选索引。

查询上一节中的函数介绍,VI:用于实现创建新的表格,输入参数Table

所创建的新的数据表名称,Column Information指定表格每一列的属性,如图 17-

21所示。

Column name输入字段名称,data type输入该字段的数据类型,siz输入

字段的大小。注意这里的data typeLabVIEW所能支持的数据类型不同,

17-22所示为data type下拉框所显示的数据类型。

17-23所示为LabVIEW数据类型和Database Connectivity工具包中 data

type数据类型的对应关系。

colunin 3*tiqn

■口

colmei nua

ealmn n«

Hm<9-

如。

dal” lypt

^SlraDj

Hi

E

-50 a

*11 MF ouj-l?

10

Siring

I

rfitritt

I

0

:

null?

Un (132)

t

Single MJ

Double CBBL)

Dftlt/Tifftt

Binary

17-21 Column Information 17-22 数据库中 data

LabVlEF

数据类型 效据库教据类型

Number Number

Irimg/Pm

Stnng

Bina Anay

Binary Clktsler

1 ---

Boolean

Emum Number

V4riwt Binary

String or Number

Binsry

WDT

Rfffnum Not supported

L'O Channel Stmng

Binary

Binary Complex Numbers

17-23 LabVIEW数据类型与type的数据类型

DB Tools中数据类型对照

按照图17-24所示的程序框图编程,table输入Data.2008报表, column

information 分别输入网26/$记口9/50]和[Age/String/50]。运行该程序

后,打开,创建一个新的表格名为2008报表,有两个字段:Name

Age

3 .删除表格

相应的,也有删除数据库表格的函数。查找一下上一节数据库函数的介绍,

DB Tools Drop 具有删除数据库表格的功能。

17-24创建新表

按照图17-25所示的程序框图编程,把之前创建的数据库表格“2008报表

删除。

双击打开数据库查看,2008报表数据文件已经成功被删除。

4 .添加记录

添加一条记录由函数DB Tools Insert 来完成。该VI的输入参数

table 表示要插入的数据库表格名称;data表示要插入的数据;columns表示对

应的 字段的名字,其数据类型是一个字符串数组。

按照图17-26所示的程序框图编程,因为我们在创建表格的时候指定了段名

NameAge,并且指定数据类型为String,因此在插入一条记录时,插入的

据也要按照相应的数据类型来设置。运行完该程序后观察数据库表格的变化。

其中函数DB Tools List 列出了数据库表格的段名。该函数的输

出段名可以直接传给DB Tools Insert 的输入column

5 .查询记录

Database Connectivity工具包并没有设置查询一条记录的函数。函数

DB Tools Select 把所连接的数据库表格的所有数据都读取出来,用户只

能从读取出来的数据经过判断得出其中的某一条符合结论的数据。

按照图17-27所示的程序框图编程。

17-27查询记录

函数Database Variant To Data用于将数据库动态变量转换成指定类型的

数据。在该例子中转换为字符串变量。

但是当数据库中的数据有成千上万条记录甚至更多呢,此时已经无法通过读

取全部的记录,然后再检索的方法来查找需要的那一条数据。

Database Connectivity工具包完全支持SQL语言。注意观察的话,可以发现函

DB Tools Select 还有一个输入参数 optional clause,该端按照 SQL

语法输入条件语句。Database Connectivity工具包的用户手册附录A上有

SQLd快速参考手册,SQL的条件查询语法格式如图17-28所示。

SELECT

SELECT [DISTIHCT] [*

CTl_eKpr ™l_eKprii . . . }

F

FROM { f J

[K[GROUP BY

(]

SELECT Io query

is used Npcotiird columns

FROM 限用ERE对汕

iuhfes. A w h

lo re^trkl the

and ORDER

BY are 口耳

and GROUP BY ciauses used iv uni"

ihe resuhing data.

SELECT eoll. eel2 eol3 FROM tabi WHERE Mil >-

r

[HAVING

{havingclau9t! ,- [OSOER BY

nF

j . . .J1

[FOR UPDATE OF

{Gol_&xpr^ .J

)

(CO13 CO12J ORDER BY col 3 A5C

4

17-28 SQL的条件查询语法

而函数DB Tools Select 已经把SELECT语句编写好集成在函数中

了,用户只需要在输入端optional clause添加WHERE的条件语句即可。图17-

29 所示是从“2008报表这张数据库表格中找出字段Name等于字符串郭靖的记

读取出来。

|.病].** ......

2008

口由

0M.it an.

L

17-29按照条件搜索记录

17.2.3 SQL语句的操作

数据库操作除了创建表格、删除表格、添加记录、查询记录等功能以外,常

用的还有删除记录、更新数据等操作,但是这些操作并没有现成的VIK可以使 用,

因此需要借助SQL语句以及SQL语句的执行操作函数来实现。

双击打开DB Tools Select ,打开它的程序框图,如图17-30所示。

17-30 DB Tools

DB Tools Select 先创建了 SQL 语句,然后用

DB Tools Execute 来执行SQL语句,以此实现对数据库的操作。

因此,在编程中也可以利用SQL语句和该函数来实现

Database Connectivity Tools工具包中没有提供的功能。

1 .SQL实现数据查询操作

按照图17-31所示编程,查询字段Name为郭靖的记录。

* £ 200Svhtrt- IF

报装 ZU

17-31按照条件搜索记录

函数DB Tools Select 的功能为获取记录数据,输入参数 Column

index是搜索的开始索引,这里设置为0,即从0开始运行该函数。

2 .SQL删除一条记录

查询SQL的参考手册,删除一条记录的语句是“delete",其语法是:

DELETE FROM table_name

WHERE column_name=some_value

按照图17-32编写程序,删除一条字段Name郭靖的记录。

17-32删除记录

注意:在使用“delete”语句时,要注意以下两点。

l “delete”语句不能删除单个字段的值,只能删除一行、多行、所有行,或一

行也不删除。

l “delete”语句仅能删除记录,无法删除数据库表格本身;删除表要用“drop”

语句;若要删除表格,则可使用DB Tools Drop

3 .压缩数据库

删除了记录后,数据库文件的大小并没有减小,即使是把数据库的记录全部

删除,结果仍然是一样。这是因为数据库在使用一段时间以后,会出现因数据删

除造成数据库中空闲空间太多的情况,这就需要减少分配给数据库文件和事物日

志文件的磁盘空间,以免浪费磁盘空间。

Microsoft提供了一个压缩数据库的方法,其思想是使用ADO的扩展:

Microsoft Jet OLE DB Provider and Replication Objects(JRO)

----- CompactDatabaseJet 对象在文件 里面,如图 17-33 所示

ri

颦? ....... 新在文件夹 大小曼

弧疝应用程序展

ri KB

51

17-33 位置

那么LabVIEW如何访问Jet对象呢,下面介绍访问的方法。

在前面板放置一个自动化引用句柄,在右键菜单中选择选择ActiveX>>

浏览,在弹出的从类型库中选择对象对话框中单击浏览按钮,按照上图路径

选择,然后在对象选择列表框中选择“JetEngine(ine.2.6)”

单击确定按钮完成ActiveX类的配置。

JTO. IJelEai^in^

在程序框图中放置一个调用节点,右键单击该节点,选择方法

“CompressDatabase",到此就实现了 LabVIEW中调用Jet对象的

“CompressDatabase”的方法,如图 17-34 所示。

这个方法仅仅是对原数据库做了一个压缩后的备份,所以还需要把原文件删

除,用这个备份来替代原数据库文件。删除文件的方法可以参考第9章。

4 .SQL实现修改数据操作

SQL中,修改一条记录的语句是“update”,其语法为:

UPDATE table_name

SET column_name=new_value

WHERE columnname=somevalue

可以按照图17-35所示的程序框图编写程序。

ZZLE- .......

京吧孑

4 •rror)

0

-^1

17-35更新数据库记录

5 7.3生成可执行文件和安装文件

17.3.1 生成可执行文件

在生成可执行文件时,用户不需要关心UDL文件等问题,唯一需要关注的

是把所有用到的数据库文件添加到应用程序的始终包括列表框中

首先要创建工程,并把之前所创建的文件ODBC连接数据源.vi

加到项目中,之前所创建的放置于该项目目录下的data文件夹下。

按照上面的方法重新连接设置ODBC数据源,如图17-36所示。

在创建我的应用程序时,可以把数据库文件添加到源文件页面

下的始终包括列表框中,如图17-37所示。其他的按照默认设置,生成可执行

函数。

运行可执行函数,没有错误返回,表明已成功连接数据库。

其中ODBC连接数据库函数。数据库的路径按照编辑状态

下和可执行文件状态下来设置,程序框图如图17-38所示。

17-37把数据库文件添加到始终包括列表框中

17-38返回数据库文件位置

17.3.2 生成安装文件

LabVIEW 8.6之前的版本,用到Database Connectivity工具包时,在生成

安装文件的过程中,需要手动添加mdac_的安装文件。现在已经不需要

这么做了,生成可执行文件后,安装文件的生成过程配置和平常无异,安装程序

属性配置完成,只要单击生成按钮即可生成安装文件。

17.4小结

本章介绍了 LabVIEW利用工具包与数据库连接的各种函数与应用,对于比

较简单的数据库操作,如创建表格、删除表格、插入记录等,工具包提供了现成

的函数,可以直接使用。对于比较复杂的数据库操作,可以利用SQL语句进行

作,工具包提供了执行SQL语句的操作函数,当然这首先要熟悉SQL语句。

Database Connectivity工具包的用户手册附录A详细地说明了 SQL语句的一般

用法,用户可参考该手册。

在本章的第3节详细地讲解了应用该工具包的函数生成可执行文件和安装

件的过程。若生成安装文件之后无法运行,则要详细查看数据库文件的路径是

正确。由于在生成可执行文件中,对于支持文件都是默认放置于data文件夹 下,

所以在编辑状态下,应尽量把这些文件也放置于data文件夹下,否则编辑 状态

下的路径在生成可执行文件后无法正常使用。