LabVIEW访问Access数据库教程
文章地址:http://digital.ni.com/public.nsf/allkb/40DC253EEB1CC11B8625806E001368D0
主要软件: LabVIEW Development Systems>>LabVIEW Professional Development System
主要软件版本: 2015
主要软件修正版本: N/A
次要软件: LabVIEW Toolkits>>Enterprise Connectivity Toolset
|
问题: Access数据库是微软提供的一个常见的数据库工具,如何使用LabVIEW访问和使用Access数据库目前没有完整教程,这里给出从新建、连接、增删改查等基本操作的方案,方便快速上手。
解答:
1. 环境搭建与准备工作
开发计算机上应当装有Microsoft Access及Access数据库引擎,下载地址https://www.microsoft.com/en-us/download/details.aspx?id=13255 办公室电脑默认没有安装这个数据库引擎,会导致后续制作UDL文件时找不到Microsoft Office 12.0 Access Database Engine OLE DB Provider这个选项,即无法使用.accdb扩展名的新版本Access文件(旧版本为.mdb)。
注意!应当下载安装32位版本的数据库引擎,否则会出现如下错误http://digital.ni.com/public.nsf/web/searchinternal/61b269d5d3f196bf8625792800365eea?OpenDocument
2. 数据库的基本概念与名词解释
数据库采用层次结构组织和存储数据,一个Access数据库文件包含了若干个表(Table),表是一类数据的集合;每个表中有若干字段(列),代表了某一类属性例如ID、姓名、联系方式等;每一行称作一条记录,一般一条记录代表一个个体,可以是一个人、一件货物等等。
SQL即结构化查询语言,是用来操作数据库的标准语言。包括了数据定义、数据操作、数据控制、交易控制四个部分,前两类是我们常用的,如新建一个表、查询排序、增加或删除记录等。以一个具体语句为例:
SELET TOP 30 * FROM mytable WHERE [my price] > 1000 AND myname <> somename ORDER BY myid ASC, mydate DESC
该语句选择了mytable这个表中my price字段大于1000并且myname字段不等于somename 中的前30条记录中的所有字段(*表示),将他们按照myid字段升序,mydate字段降序排列显示。注意!数据库操作中的英文不分大小写,例如Table和table是同一个表,id和ID是同一个字段,写SQL语句时用小写也可以得到相同的结果,但为了清晰易辨,SQL关键词可以用全大写。
3. 建立UDL数据库链接
UDL文件是LabVIEW连接数据库的枢纽,有两种方法新建UDL文件,方法一是新建文本文件,将后缀名改成.udl,双击之后进行配置,参见http://digital.ni.com/public.nsf/web/searchinternal/1d5eb4dcbd13106486256b9d005e11b0?OpenDocument 第二种方法是在LabVIEW – 工具- Create Data Link新建UDL并配置数据库位置,由于不需要人工新建文件和改后缀名,比较推荐此方法,参见http://digital.ni.com/public.nsf/allkb/5351D6732E4100B586256F700060CC17?OpenDocument
4. 在LabVIEW中操作数据库
LabVIEW自带的database高级操作其实是对SQL Query的封装,其底层都是使用SQL语言操作数据库。这里使用图1所示的vi直接执行SQL语句,可以避免高级操作无法排序显示、难以执行复杂嵌套语句等弊端,方便快捷的使用SQL的各项功能。
![](http://digital.ni.com/public.nsf/$CXIV/ATTACH-AEEE-AFS824/$FILE/1.png)
图1 核心vi
![](http://digital.ni.com/public.nsf/$CXIV/ATTACH-AEEE-AFS82M/$FILE/2.png)
图2 核心操作
注意!字段具有不同的类型,如数字、字符串、时间、价格等,在SQL语句中也有不同的标识,操作数字类型(不论整型还是浮点)和价格直接输入数字即可,如id = 100,字符串需要用’’单引号引起来,如用户名 = ‘小明’,时间需要用##两个井号包括起来,如time = #2010/1/1#。也可使用Access提供的类型转换函数CDate() https://support.office.com/en-us/article/Type-Conversion-Functions-8ebb0e94-2d43-4975-bb13-87ac8d1a2202一些字段中含有空格,需要用[] 括起来,否则无法正常识别,如[saved level] = 10。
INSERT INTO USERS (id, 用户名, 密码) VALUES (123, 'xiaoming', '123fasdf')
新增记录时可以不用对所有字段赋值。注意!字段名与内容类型要一致,要用()括起来。
2)删
DELETE FROM USERS WHERE time < #2010/1/1#
WHERE的用法:表示限定条件,如大于>;小于<;不等于<>;在…之间BETWEEN value1 AND value2;包含关键字LIKE value;多个可能值 IN (value1, value2, …, valuen);
3)改
UPDATE USERS SET Price = 1000 WHERE id > 5000
注意:并不是所有字段都可以update,例如本例中的id定义为自增量,不能重复且不能更改。http://stackoverflow.com/questions/24267398/why-is-my-query-not-updateable
4)查
SELECT top 3 * FROM USERS ORDER BY Price ASC, id DESC
这里进行了排序操作ORDER BY,排序可以有多个关键字,每个关键字可以分别是升序ASC和降序DESC。本例中的操作将Price升序排列,对于Price一致的,id号降序排列,如图3
![](http://digital.ni.com/public.nsf/$CXIV/ATTACH-AEEE-AFS85H/$FILE/3.png)
图3 排序操作结果
以下链接对Access中使用SQL语句进行了讲解
相关链接:
附件: KS-LV-Access.rar
|
报告日期: 2016-11-16
最近更新: 2016-11-21
文档编号: 7FFM9B6M