文章地址: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的各項功能。

圖
1 核心vi

圖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

圖3 排序操作結果
以下鏈接對Access中使用SQL語句進行了講解
相關鏈接:
2.
http://ae.natinst.com/public.nsf/web/searchinternal/61b269d5d3f196bf8625792800365eea?OpenDocument
3.
http://ae.natinst.com/public.nsf/web/searchinternal/1d5eb4dcbd13106486256b9d005e11b0?OpenDocument
附件: KS-LV-Access.rar
|
報告日期: 2016-11-16
最近更新: 2016-11-21
文檔編號: 7FFM9B6M