深入淺出LabVIEW數(shù)據(jù)庫應(yīng)用
2015年12月26日| 資料類型 | rar文件 | 資料大小 | 1912637 |
| 下載次數(shù) | 140 | 資料圖片 | 【點(diǎn)擊查看】 |
| 上 傳 人 | 北京市瀚文網(wǎng)星科技有限責(zé)任公司 | 需要積分 | 0 |
| 關(guān) 鍵 詞 | LabVIEW,LabVIEW數(shù)據(jù)庫,數(shù)據(jù)庫 | ||
- 【資料簡介】
目錄
第1章引言—獻(xiàn)給想用數(shù)據(jù)庫而不懂?dāng)?shù)據(jù)庫的工程師..........................................1
第2章邊干邊學(xué)數(shù)據(jù)庫基礎(chǔ)......................................................................................2
2.1 數(shù)據(jù)庫簡史...................................................................................................................2
2.2 建立數(shù)據(jù)源...................................................................................................................2
2.2.1 在Access中建立一個(gè)數(shù)據(jù)庫............................................................................2
2.2.2 建立與數(shù)據(jù)庫的連接.......................................................................................3
2.2.3 數(shù)據(jù)庫連接的可移植性問題(話題)...................................................7
2.3 數(shù)據(jù)庫基本操作...........................................................................................................8
2.3.1 創(chuàng)建一個(gè)表格...................................................................................................8
2.3.2 刪除一個(gè)表格.................................................................................................10
2.3.3 添加一條記錄.................................................................................................10
2.3.4 查詢一條記錄.................................................................................................11
2.4 數(shù)據(jù)庫操作.........................................................................................................12
2.4.1 在LabVIEW中執(zhí)行SQL語言案例研究.........................................................12
2.4.2 用SQL實(shí)現(xiàn)數(shù)據(jù)查詢操作.............................................................................13
2.4.3 用SQL實(shí)現(xiàn)刪除一條記錄.............................................................................13
2.4.4 壓縮數(shù)據(jù)庫,釋放多余空間.........................................................................14
2.4.5 用SQL實(shí)現(xiàn)修改數(shù)據(jù)操作.............................................................................15
2.5 本章總結(jié).....................................................................................................................16
第3章一個(gè)完整的數(shù)據(jù)庫工程范例........................................................................17
3.1 工程項(xiàng)目要求.............................................................................................................17
3.2 生成可執(zhí)行文件(*.exe)..............................................................................................18
3.3 生成安裝文件(Installer).............................................................................................19
第4章后記................................................................................................................22
i
第1章 引言—獻(xiàn)給想用數(shù)據(jù)庫而不懂?dāng)?shù)據(jù)庫的工程師
曾經(jīng)在一個(gè)產(chǎn)品檢測項(xiàng)目中,客戶要求:當(dāng)產(chǎn)品檢測不合格時(shí),記下該產(chǎn)品對應(yīng)的序列號,測試時(shí)間和各項(xiàng)測試指標(biāo),并能對這些數(shù)據(jù)進(jìn)行管理和查詢。由于自己沒有系統(tǒng)的學(xué)習(xí)過數(shù)據(jù)庫,所以*時(shí)間想到的解決方案是用文件的方式(也只能把數(shù)據(jù)存成文件了)。在使用文件進(jìn)行數(shù)據(jù)儲存與管理時(shí),遇到了一個(gè)巨大的問題:如何查詢數(shù)據(jù)?基本的文件IO函數(shù)中,并沒有提供現(xiàn)成的查詢函數(shù),所以必須自己編程實(shí)現(xiàn)。實(shí)現(xiàn)的過程是先將數(shù)據(jù)讀入內(nèi)存,然后再根據(jù)關(guān)鍵字進(jìn)行線性查找,線性查找的時(shí)間復(fù)雜度為O(N),所以當(dāng)數(shù)據(jù)量逐漸增大時(shí),這將是一個(gè)非??膳碌倪^程。這個(gè)不可逾越的障礙迫使我不得不再次考慮使用數(shù)據(jù)庫。
想到這兒,我立即到天河書城買了兩本網(wǎng)上評價(jià)為數(shù)據(jù)庫經(jīng)典的書《數(shù)據(jù)庫系統(tǒng)概念》和《輕松掌握SQL》,回到辦公室后立即開始學(xué)習(xí)起來。陌生的術(shù)語,難懂的理論;看了后一章便忘了前一章——非常痛苦但還是硬著頭皮堅(jiān)持到了下班。
這種痛苦再加上越來越近的項(xiàng)目交付日期,使我非常焦躁,心里終于有個(gè)聲音爆發(fā)了出來“我不就是想要實(shí)現(xiàn)數(shù)據(jù)的保存,修改,刪除和查詢嗎?我需要把那眾多的數(shù)據(jù)庫類型、復(fù)雜的關(guān)系模型、抽象的關(guān)系代數(shù)…都搞懂嗎???”實(shí)踐后的答案是,不需要,一點(diǎn)都不需要。
我放棄了剛買的新書,打開了LabVIEW 數(shù)據(jù)庫工具包的用戶手冊和范例程序,尋找著我期望的數(shù)據(jù)保存,修改,刪除和查詢功能。到下班的時(shí)候,Everything goes well,基本掌握了用LabVIEW 數(shù)據(jù)庫工具包進(jìn)行數(shù)據(jù)保存,修改,刪除和查詢的方法。
回想起這段歷程,突然有種想與大家一起分享的沖動(dòng)——不懂?dāng)?shù)據(jù)庫的工程師也可以玩轉(zhuǎn)數(shù)據(jù)庫,因?yàn)閺膽?yīng)用的角度來看,我們的實(shí)際需求僅僅是數(shù)據(jù)的保存、修改、刪除和查詢,根本不需要去研究復(fù)雜的關(guān)系模型、抽象的關(guān)系代數(shù)、艱深的數(shù)據(jù)庫設(shè)計(jì)…那基本與我們的初始目標(biāo)南轅北轍。借助LabVIEW 數(shù)據(jù)庫鏈接工具包(Database Connectivity toolkit)可以站在應(yīng)用的層次,很方便的操作數(shù)據(jù)庫,實(shí)現(xiàn)數(shù)據(jù)的保存、修改、刪除和查詢等功能。
“學(xué)以致用,邊學(xué)邊用,急用先學(xué),*”,在后續(xù)的章節(jié)中,我們先概覽一下必需的與數(shù)據(jù)庫相關(guān)的基本概念,然后在LabVIEW平臺上一邊學(xué)習(xí),一邊實(shí)踐如何儲存、管理和查詢數(shù)據(jù)。
1
第2章 邊干邊學(xué)數(shù)據(jù)庫基礎(chǔ)
2.1 數(shù)據(jù)庫簡史
在20世紀(jì)60年代,*個(gè)數(shù)據(jù)庫管理系統(tǒng)(DBMS)發(fā)明以前,數(shù)據(jù)記錄主要是通過磁盤或穿孔卡片,那時(shí)候,無論是數(shù)據(jù)的管理、查詢或是存儲都是一件非常痛苦的事情。隨著計(jì)算機(jī)開始廣泛地應(yīng)用于數(shù)據(jù)管理,數(shù)據(jù)共享要求也越來越高,傳統(tǒng)的文件系統(tǒng)已經(jīng)不能滿足人們的需要,能夠統(tǒng)一管理和共享數(shù)據(jù)的數(shù)據(jù)庫管理系統(tǒng)應(yīng)運(yùn)而生。*個(gè)數(shù)據(jù)庫是美國通用電氣公司Bachman等人在1961年開發(fā)成功的IDS(Integrated DataStore),它奠定了數(shù)據(jù)庫的基礎(chǔ),并在當(dāng)時(shí)得到了廣泛的發(fā)行和應(yīng)用。
隨后,在1970年,IBM的研究員E.F.Codd博士在刊物《Communication of the ACM》上發(fā)表了一篇名為“A Relational Model of Data for Large Shared Data Banks”的論文,提出了關(guān)系模型的概念,奠定了關(guān)系模型的理論基礎(chǔ)。這篇論文被普遍認(rèn)為是數(shù)據(jù)庫系統(tǒng)歷*具有劃時(shí)代意義的里程碑。Codd的心愿是為數(shù)據(jù)庫建立一個(gè)優(yōu)美的數(shù)據(jù)模型,后來Codd又陸續(xù)發(fā)表多篇文章,論述了范式理論和衡量關(guān)系系統(tǒng)的12條標(biāo)準(zhǔn),用數(shù)學(xué)理論奠定了關(guān)系數(shù)據(jù)庫的基礎(chǔ)。
1974年,IBM的Ray Boyce和Don Chamberlin將Codd關(guān)系數(shù)據(jù)庫的12條準(zhǔn)則的數(shù)學(xué)定義以簡單的關(guān)鍵字語法表現(xiàn)出來,提出了具有里程碑意義的SQL(Structured Query Language)語言。SQL語言的功能包括查詢、操縱、定義和控制,是一個(gè)綜合的、通用的關(guān)系數(shù)據(jù)庫語言,同時(shí)又是一種高度非過程化的語言,只要求用戶指出做什么而不需要指出怎么做。SQL語言的這個(gè)特點(diǎn)使之成為了一種真正的跨平臺和跨產(chǎn)品的語言。
現(xiàn)今,數(shù)據(jù)庫技術(shù)已經(jīng)發(fā)展的比較成熟了,的數(shù)據(jù)庫管理系統(tǒng)有SQL Server、Oracle、DB2、Sybase ASE、Visual ForPro、Microsoft Access等。Microsoft Access是在Windows環(huán)境下非常流行的桌面型數(shù)據(jù)庫管理系統(tǒng),它作為Microsoft office組件之一,安裝和使用都非常方便,并且支持SQL語言,所以本文將基于Access來介紹數(shù)據(jù)庫的操作。
2.2 建立數(shù)據(jù)源
實(shí)現(xiàn)數(shù)據(jù)庫功能的*步便是建立數(shù)據(jù)源,下面將詳述整個(gè)過程。
2.2.1 在Access中建立一個(gè)數(shù)據(jù)庫
LabVIEW 數(shù)據(jù)庫工具包只能操作而不能創(chuàng)建數(shù)據(jù)庫,所以必須借助第三方數(shù)據(jù)庫管理系統(tǒng),比如Access,來創(chuàng)建數(shù)據(jù)庫。本文的大型數(shù)據(jù)庫范例程序是iPhone測試,所以先建立一個(gè)名為iPhoneData.mdb的數(shù)據(jù)庫文件,如圖2.1所示。
2
圖2.1 創(chuàng)建Access數(shù)據(jù)庫
2.2.2 建立與數(shù)據(jù)庫的連接
在利用LabVIEW 數(shù)據(jù)庫工具包操作數(shù)據(jù)庫之前,需要先連接數(shù)據(jù)庫,這就像操作文件之前,先要打開文件一樣。連接數(shù)據(jù)庫有兩種方法:
1. 利用DSN連接數(shù)據(jù)庫
LabVIEW 數(shù)據(jù)庫工具包基于ODBC(Open Database Connectivity)技術(shù),如圖2.2所示,在使用ODBC API函數(shù)時(shí),需要提供數(shù)據(jù)源名DSN(Data Source Names)才能連接到實(shí)際數(shù)據(jù)庫,所以我們需要首先創(chuàng)建DSN。
圖2.2 LabVIEW 數(shù)據(jù)庫工具包基于ODBC技術(shù)
【背景知識】ODBC(Open Database Connectivity,開放數(shù)據(jù)庫互連)是微軟公司開放服務(wù)結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來完成其大部分任務(wù)。ODBC本身也提供了對SQL語言的支持,用戶可以直接將SQL語句送給ODBC。
3
在“Windows控制面板”中雙擊“管理工具”,然后雙擊“數(shù)據(jù)源”,進(jìn)入ODBC數(shù)據(jù)源管理器,如圖2.3所示。
圖2.3 ODBC數(shù)據(jù)源管理器
User DSN(用戶數(shù)據(jù)源名)選項(xiàng)卡下建立的數(shù)據(jù)源名只有本用戶才能訪問,System DSN(系統(tǒng)數(shù)據(jù)源名)選項(xiàng)卡下建立的數(shù)據(jù)源名在該系統(tǒng)下的所有用戶都可以訪問。User DSN選項(xiàng)卡下點(diǎn)擊按鈕,會彈出數(shù)據(jù)源驅(qū)動(dòng)選擇對話框,然后選擇Microsoft Access Driver(*.mdb),如圖2.4所示。
圖2.4 數(shù)據(jù)源驅(qū)動(dòng)選擇對話框
點(diǎn)擊“Finish”按鈕后,會彈出ODBC Microsoft Access Setup窗口,在Data Source Name填入一個(gè)名字,比如iPhoneData,然后在Database欄中單擊Select按鈕選擇先前已經(jīng)建立好的iPhoneData.mdb數(shù)據(jù)庫文件,其它參數(shù)保持默認(rèn),單擊OK按鈕,如圖2.5所示。
4
圖2.5 ODBC Microsoft Access Setup窗口
完成上述設(shè)置后,就可以在User DSN選項(xiàng)卡下看到新建的DSN了。單擊OK按鈕完成DNS的建立。打開隨本文的程序:ConnectionExample.vi,在DSN Name中填入剛建好的DSN名并運(yùn)行,如圖2.6所示。
圖2.6 利用DSN連接數(shù)據(jù)庫
【注意】使用DSN連接數(shù)據(jù)庫需要考慮移植問題,當(dāng)你把代碼發(fā)布到其它機(jī)器上時(shí),需要手動(dòng)為其重新建立一個(gè)DSN。
2. 利用UDL連接數(shù)據(jù)庫
Microsoft設(shè)計(jì)的ODBC標(biāo)準(zhǔn)只能訪問關(guān)系型數(shù)據(jù)庫,對非關(guān)系型數(shù)據(jù)庫則無能為力。為解決這個(gè)問題,Microsoft還提供了另一種技術(shù):Active數(shù)據(jù)對象ADO(ActiveX Data Objects)技術(shù)。ADO是Microsoft提出的應(yīng)用程序接口(API)用以實(shí)現(xiàn)訪問關(guān)系或非關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)。ADO使用通用數(shù)據(jù)連接UDL(Universal Data Link)來獲得數(shù)據(jù)庫信息以實(shí)現(xiàn)數(shù)據(jù)庫連接。
在iPhoneData.mdb所在的文件夾下點(diǎn)擊鼠標(biāo)右鍵->新建->Microsoft Data Link,如圖2.7所示,并把文件命名為“iPhoneData.udl”。
5
圖2.7 新建UDL文件
雙擊“iPhoneData.udl”,打開Data Link Properties對話框,在Provider選項(xiàng)卡中選擇Microsoft Jet 4.0 OLE DB Provider,如圖2.8所示,并點(diǎn)擊Next>>按鈕。
圖2.8 選擇Provider
在Connection選項(xiàng)卡中,選擇已建立好的數(shù)據(jù)庫文件,然后點(diǎn)擊Test Connection按鈕,
6
如果沒有什么問題的話,會彈出Test Connection succeeded的對話框,如圖2.9所示。
圖2.9 選擇數(shù)據(jù)庫源
創(chuàng)建好UDL后,打開隨本文的程序:ConnectionExample.vi 在DSN Name中填入剛建好的DSN名并運(yùn)行,如果成功的話,會如圖2.10所示。
圖2.10 利用UDL連接數(shù)據(jù)庫
2.2.3 數(shù)據(jù)庫連接的可移植性問題(話題)
用文本編輯器打開剛新建的“iPhoneData.udl”文件,其內(nèi)容如下所示:
[oledb]
; Everything after this line is an OLE DB initstring
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Doc\ApplicationNotes\DatabaseAppNotes\data\iPhoneData.mdb;Persist Security Info=False
分號(;)后面的內(nèi)容是注釋可以不用搭理。Data Source后面是數(shù)據(jù)庫的路徑,所以,當(dāng)數(shù)據(jù)庫文件位置變化后,程序就會出錯(cuò)。
我們可以直接把“iPhoneData.udl”文件中的信息重新生成,然后傳給DB Tools Open 7
Connection .vi,如圖2.11所示。具體的實(shí)現(xiàn)可以參看本文附帶的范例。
圖2.11 GetDBPath.vi
在后面的程序中,本文都將使用 GetDBPath.vi來獲得數(shù)據(jù)庫的位置信息,然后傳給DB Tools Open Connection .vi。
2.3 數(shù)據(jù)庫基本操作
連接上數(shù)據(jù)庫之后,就可以對數(shù)據(jù)庫進(jìn)行操作了。本節(jié)主要介紹數(shù)據(jù)庫zui常用的幾種基本操作,包括創(chuàng)建表格、刪除表格、添加記錄、查詢記錄。
2.3.1 創(chuàng)建一個(gè)表格
數(shù)據(jù)庫是以表的形式來記錄數(shù)據(jù)的,如圖2.12所示,大家可以用Access打開一個(gè)數(shù)據(jù)庫文件來體驗(yàn)一下。
圖2.12 數(shù)據(jù)庫里的表格
數(shù)據(jù)表的每一行,表示一條記錄(Record);每一列,表示記錄中的字段(Field),說的通俗點(diǎn)就是記錄中的一項(xiàng)內(nèi)容,比如測試時(shí)間。能夠*標(biāo)識表中某一行的屬性或?qū)傩越M,叫主鍵(Primary Key),一個(gè)表只能有一個(gè)主鍵,但可以有多個(gè)候選索引。因?yàn)橹麈I可以*標(biāo)識某一行記錄,所以可以確保執(zhí)行數(shù)據(jù)更新、刪除的時(shí)候不會出現(xiàn)張冠李戴的錯(cuò)誤。
創(chuàng)建數(shù)據(jù)表由LabVIEW 數(shù)據(jù)庫工具包中的實(shí)現(xiàn)。參數(shù)中的Table,為被創(chuàng)建的數(shù)據(jù)表表名,Column Information表格每一列的屬性,如圖2.13所示。
8
圖2.13 column information
需要注意的是column information中的Data type設(shè)置部分,LabVIEW的數(shù)據(jù)類型有許多種,而這里的Data type選項(xiàng)只有幾種,所以必須清楚LabVIEW數(shù)據(jù)類型和Column information中的Data type的對應(yīng)關(guān)系,如表2.1所示。
表2.1 對應(yīng)關(guān)系
LabVIEW 數(shù)據(jù)類型
數(shù)據(jù)庫數(shù)據(jù)類型
Number
Number
String/Path
String
Array
Binary
Cluster
Binary
Boolean
String or Number
Enum
Number
Variant
Binary
Picture control
Binary
WDT
Binary
Refnum
Not supported
I/O Channel
String
Complex Numbers
Binary
知道了這個(gè)對應(yīng)關(guān)系后,創(chuàng)建數(shù)據(jù)庫表格便是一件很容易的事情,范例程序如圖2.14所示,具體代碼請參考CreateTable.vi。
圖2.14 創(chuàng)建數(shù)據(jù)庫表格代碼
9
如果數(shù)據(jù)庫表格創(chuàng)建成功,大家可以用Access打開數(shù)據(jù)庫,看到自己創(chuàng)建的表格。
2.3.2 刪除一個(gè)表格
與數(shù)據(jù)庫表格創(chuàng)建相對應(yīng)的是數(shù)據(jù)庫表格刪除,由實(shí)現(xiàn)。將需要?jiǎng)h除的數(shù)據(jù)庫的名字告訴DB Tools Drop Table.vi即可完成數(shù)據(jù)庫表格的刪除操作。具體實(shí)現(xiàn)如圖2.15所示。
圖2.15 刪除數(shù)據(jù)表格
【分享】表格創(chuàng)建和刪除的參數(shù)非常相似,可以很方便的在一個(gè)VI里面同時(shí)實(shí)現(xiàn)表格的創(chuàng)建和刪除操作。
2.3.3 添加一條記錄
添加一條記錄由來實(shí)現(xiàn),DB Tools Insert Data.vi需要三個(gè)主要的參數(shù):table(數(shù)據(jù)表名)告訴DB Tools Insert Data.vi往數(shù)據(jù)庫里的哪個(gè)表格插入數(shù)據(jù);data,告訴DB Tools Insert Data.vi插入什么數(shù)據(jù);columns對應(yīng)插入的列的名字,其數(shù)據(jù)類型是一個(gè)字符串?dāng)?shù)組。添加記錄的范例程序如圖2.16所示。
圖2.16 添加一條記錄
LabVIEW 數(shù)據(jù)庫工具包提供了一個(gè)工具VI,可以把數(shù)據(jù)表的column名字讀出來傳給DB Tools Insert Data.vi,這樣可以省去手動(dòng)輸入column名字的工作。
10
2.3.4 查詢一條記錄
數(shù)據(jù)能存儲到數(shù)據(jù)庫之后,下一個(gè)要考慮的操作即是如何把數(shù)據(jù)讀出。把數(shù)據(jù)從數(shù)據(jù)庫中讀出的VI是,我們只需要告訴DB Tools Select Data.vi讀取哪個(gè)數(shù)據(jù)表格,DB Tools Select Data.vi就會把該表格中的所有數(shù)據(jù)讀出來,如圖2.17所示。
圖2.17 從數(shù)據(jù)庫中讀出數(shù)據(jù)
從讀出的數(shù)據(jù)是動(dòng)態(tài)數(shù)據(jù)類型,需要通過函數(shù)把動(dòng)態(tài)數(shù)據(jù)類型轉(zhuǎn)換成正確的數(shù)據(jù)類型。
大多數(shù)情況下,我們并不需要把數(shù)據(jù)庫中的數(shù)據(jù)全部讀出來。比如,數(shù)據(jù)庫中已經(jīng)有1000條記錄了,每次都要把1000條記錄讀出來,費(fèi)時(shí)費(fèi)力。
LabVIEW 數(shù)據(jù)庫工具包*支持SQL語言,在的optional clause輸入端按照SQL語法輸入條件語句,即可讀出感興趣的數(shù)據(jù)。SQL語言非常簡單,如果從來沒有接觸過SQL語言,可以花一點(diǎn)時(shí)間學(xué)習(xí)一下。LabVIEW 數(shù)據(jù)庫工具包的用戶手冊附錄A上有SQL的快速參考手冊。SQL的條件查詢語法格式如圖2.18所示。
圖2.18 SQL的條件查詢語法格式
11
已經(jīng)把SELECT語句預(yù)先集成好了,我們只需要在optional clause輸入端加入WHERE語句部分即可,如圖2.19所示。范例程序從TestResult這張表里把字段TestTime等于字符串“2008-8-27 16:24:34”的記錄讀出來。
圖2.19 讀出感興趣的數(shù)據(jù)
【參考知識】WHERE語句可包括各種條件運(yùn)算符:
比較運(yùn)算符(大小比較):>、>=、=、<、<=、<>、!>、!<
范圍運(yùn)算符(表達(dá)式值是否在的范圍):BETWEEN…AND… NOT BETWEEN…AND…
列表運(yùn)算符(判斷表達(dá)式是否為列表中的項(xiàng)):IN (項(xiàng)1,項(xiàng)2……) NOT IN (項(xiàng)1,項(xiàng)2……)
模式匹配符(判斷值是否與的字符通配格式相符):LIKE、NOT LIKE
空值判斷符(判斷表達(dá)式是否為空):IS NULL、NOT IS NULL
邏輯運(yùn)算符(用于多條件的邏輯連接):NOT、AND、OR
2.4 數(shù)據(jù)庫操作
數(shù)據(jù)庫操作除了創(chuàng)建表格、刪除表格、添加記錄、查詢記錄外,常用的還有刪除記錄、更新現(xiàn)有數(shù)據(jù)等操作。由于這些操作并沒有現(xiàn)成的VI,所以需要借助SQL語言來實(shí)現(xiàn)。
2.4.1 在LabVIEW中執(zhí)行SQL語言案例研究
如前所述,絕大部分DBMS都支持SQL語言,LabVIEW 數(shù)據(jù)庫工具包實(shí)現(xiàn)的實(shí)質(zhì)也是基于SQL語言,它為不熟悉SQL語言的用戶把SQL語言封裝了起來,以方便他們使用。2.3節(jié)的操作都是基于已封裝好的VI。
雙擊,打開它的程序框圖,如圖2.20所示,讓我們一起來研究一下它的實(shí)現(xiàn)過程。
圖2.20 DB Tools Select Data的代碼實(shí)現(xiàn)
12
如圖2.20所示,DB Tools Select Data.vi先創(chuàng)建了SQL語句,然后用來執(zhí)行SQL語句,以此實(shí)現(xiàn)對數(shù)據(jù)庫的操作。
在本節(jié)中,我們也沿用這種模式,直接用SQL來實(shí)現(xiàn)LabVIEW 數(shù)據(jù)庫工具包中沒有提供的功能。
2.4.2 用SQL實(shí)現(xiàn)數(shù)據(jù)查詢操作
了解了LabVIEW如何執(zhí)行SQL語言后,我們可以重新實(shí)現(xiàn)2.3.4查詢一條記錄的功能,范例程序如圖2.21所示。
圖2.21 用SQL查詢記錄
2.4.3 用SQL實(shí)現(xiàn)刪除一條記錄
通過查閱SQL參考手冊,我們知道刪除一條記錄的語句是“dee”,其語法為:
DELETE FROM table_name
WHERE column_name = some_value
參考圖2.21,我們很容易實(shí)現(xiàn)刪除一條記錄的操作,如圖2.22所示。
圖2.22 刪除一條記錄
在使用“dee”語句時(shí),需要注意:
1. “dee”語句不能刪除單個(gè)字段的值,只能刪除一行、多行、所有行或一行也不刪除;
2. “dee”語句僅能刪除記錄,不能刪除表本身;刪除表要用“drop”語句,這也是為什么LabVIEW 數(shù)據(jù)庫工具包中刪除表的VI叫Drop Table。
13
2.4.4 壓縮數(shù)據(jù)庫,釋放多余空間
刪除了記錄后,你會驚奇的發(fā)現(xiàn)數(shù)據(jù)庫文件并沒有減小,就算把所有的數(shù)據(jù)全部都刪除掉,結(jié)果也一樣。這是因?yàn)閿?shù)據(jù)庫在使用一段時(shí)間后,時(shí)常會出現(xiàn)因數(shù)據(jù)刪除而造成數(shù)據(jù)庫中空閑空間太多的情況,這時(shí)就需要減少分配給數(shù)據(jù)庫文件和事務(wù)日志文件的磁盤空間,以免浪費(fèi)磁盤空間。
Microsoft提供了一個(gè)壓縮數(shù)據(jù)庫的方法,請參考How To Compact Microsoft Access Database Through ADO。其基本思想是,使用ADO的擴(kuò)展: Microsoft Jet OLE DB Provider and Replication Objects (JRO)中的方法:CompactDatabase。Jet對象在文件Msjro.dll里面,如圖2.23所示。
圖2.23 Msjro.dll文件
下面將簡單介紹一下在LabVIEW中訪問Jet對象的方法:
在前面板上放一個(gè),在右鍵菜單中選擇”Select Active Class”->”Browe…”,如圖2.24所示。
圖2.24 選擇Jet Engine
在彈出的Select Object From Type Library窗口中點(diǎn)擊Browse按鈕,按照圖2.24所示的路徑選擇Msjro.dll。然后在Objects選擇框中選擇JetEngine(JRO.JetEngine.2.6),點(diǎn)擊OK按鈕,如圖2.25所示。
14
圖2.25 選擇Jet對象
在程序框圖中放置一個(gè)方法節(jié)點(diǎn),并選擇方法CompressDatabase,如圖2.26所示。到此為止,就實(shí)現(xiàn)了在LabVIEW中調(diào)用Jet對象的CompressDatabase方法。
圖2.26 調(diào)用CompressDatabase方法
由于這個(gè)方法僅僅對原數(shù)據(jù)庫做了一個(gè)壓縮后的備份,所以,還需要把原文件移除,用這個(gè)備份來替代原數(shù)據(jù)庫文件。詳細(xì)實(shí)現(xiàn)請參考Access File Compress Database.vi。
2.4.5 用SQL實(shí)現(xiàn)修改數(shù)據(jù)操作
SQL中,修改一條記錄的語句是“update”,其語法為:
UPDATE table_name
SET column_name = new_value
WHERE column_name = some_value
修改一條記錄的范例程序,如圖2.27所示:
15
圖2.27 修改一條記錄
2.5 本章總結(jié)
本章介紹了大多數(shù)zui常用的數(shù)據(jù)庫操作及在LabVIEW平臺下的實(shí)現(xiàn)方法。SQL語言是一種數(shù)據(jù)庫操作的通用語言,不僅在LabVIEW數(shù)據(jù)庫工具包中可以用到,在其它語言(如VB,VC)平臺下也可以使用。希望大家通過上面的操作不僅學(xué)習(xí)了LabVIEW數(shù)據(jù)庫工具包,也熟悉了SQL語言。
16
第3章 一個(gè)完整的數(shù)據(jù)庫工程范例
本章將給出一個(gè)工程項(xiàng)目,用于對本文介紹的知識進(jìn)行消化和總結(jié)。
3.1 工程項(xiàng)目要求
讀者學(xué)完labVIEW數(shù)據(jù)庫工具包后,可以按照如下要求,實(shí)現(xiàn)一個(gè)測試項(xiàng)目工程:
1. 測試iPhone的Power是否合格;
2. 測試iPhone耳機(jī)的THD曲線;
3. 測試iPhone的觸摸屏;
4. 測試iPhone麥克風(fēng)的聲壓級(SPL);
5. 完成測試后,把這些測試結(jié)果記錄到數(shù)據(jù)庫中;
6. 能夠讀入數(shù)據(jù)庫,并能按要求檢索數(shù)據(jù);
7. 能按照測試時(shí)間等內(nèi)容對結(jié)果進(jìn)行升序或降序排列。
該工程項(xiàng)目的界面如圖3.1和圖3.2所示。
圖3.1 iPhone測試界面
17
圖3.2 iPhone測試數(shù)據(jù)分析界面
具體代碼可以參考隨本文的范例:DatabaseExample.lvprj。
3.2 生成可執(zhí)行文件(*.exe)
在2.2.3節(jié)中,我們討論了數(shù)據(jù)庫連接的可移植性問題,如果使用本文介紹的方法,則在生成可執(zhí)行文件的過程中不用關(guān)心UDL文件等問題。在生成可執(zhí)行文件的過程中*需要注意的是把所用到的數(shù)據(jù)庫文件添到到可執(zhí)行文件的支持文件(Support files)中去。
步驟一:把數(shù)據(jù)庫文件添加到工程中去,如圖3.3所示。
步驟二:在Build specification的Source file選項(xiàng)中,把數(shù)據(jù)庫文件iPhoneData.mdb添加到Support file中,這樣iPhoneData.mdb會被加入Support Directory。如圖3.4所示。
其它設(shè)置與通常生成可執(zhí)行文件的基本步驟一樣,點(diǎn)擊”Build”按鈕即可生成可執(zhí)行文件。
18
圖3.3 把數(shù)據(jù)庫文件添加到工程
圖3.4 把數(shù)據(jù)庫文件添加到Support files中
如果出現(xiàn)生成的可執(zhí)行文件無法執(zhí)行數(shù)據(jù)保存和檢索的操作,請檢查執(zhí)行文件和數(shù)據(jù)庫文件的相對路徑是否正確。
3.3 生成安裝文件(Installer)
生成安裝文件,我們所要考慮的問題是,目標(biāo)機(jī)上是否有對LabVIEW數(shù)據(jù)庫工具包的支持——MDAC2.5。
LabVIEW數(shù)據(jù)庫工具包已經(jīng)自帶了MDAC2.5的安裝文件——mdac_typ.exe,所以,我們需要把mdac_typ.exe添加到安裝文件中去。讓安裝文件在安裝過程中把MDAC2.5替我們裝到目標(biāo)機(jī)上。
步驟一:把mdac_typ.exe添加到工程中,如圖3.5所示。mdac_typ.exe在LabVIEW安裝路徑
19
\National Instruments\LabVIEW 8.2\Database\MDAC中。
圖3.5把mdac_typ.exe添加到工程中
步驟二:在Source File里面先把已編譯好的可執(zhí)行文件添加到ProgramfileFolder中去,然后把mdac_typ.exe添加到data文件夾中去,如圖3.6所示。
圖3.6 把mdac_typ.exe添加到data文件夾中
步驟三:在Advanced設(shè)置窗口中,把mdac_typ.exe添加到Run Executable after installation中,如圖3.7所示。
20
圖3.7 添加mdac_typ.exe到Run Executable after installation
其余步驟與通常制作安裝文件的步驟一致,zui后點(diǎn)擊Build即可生成安裝文件了。
到此,大功終于告成了,還等什么,趕快親手去試試?。
21
第4章 后記
“I hear and I forget;
I see and I remember;
I do and I understand.”
眼見為實(shí),耳聽為虛,任何事都要親自付以行動(dòng)才能真真正正的理解。在LabVIEW這樣一個(gè)非常適合工程師和科學(xué)家的平臺上,多嘗試,多實(shí)踐是工程能力增長的不二法門。
拙作肯定存在不少問題,有任何問題,可以給我: jing.zhang.zju,真心希望能與大家一起分享一起討論。
22
積分抽獎(jiǎng)活動(dòng)開始啦~智能制造網(wǎng)喊你來領(lǐng)錢嘍
智能制造網(wǎng)2025年度積分抽獎(jiǎng)活動(dòng)現(xiàn)已正式開始。活動(dòng)時(shí)間為2026年[詳細(xì)]
- 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://tcjtzx.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
- 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

