呂興琴
(江蘇省海安中等專業(yè)學(xué)校,江蘇 南通 226600)
Access數(shù)據(jù)庫是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),也是最基本的數(shù)據(jù)庫入門工具。它由一系列表組成,表又由一系列行和列組成,每一行是一個記錄,每一列是一個字段,每個字段有一個字段名,字段名在一個表中不能重復(fù)。Access數(shù)據(jù)庫界面友好、功能齊全、操作簡單、可擴展性強、安裝和使用都非常方便,可用于工業(yè)、農(nóng)業(yè)、商業(yè)資訊、圖書信息管理、教學(xué)管理等領(lǐng)域,應(yīng)用十分廣泛[1-2]。
LabVIEW由美國國家儀器(NI)公司研發(fā),類似于C語言和BASIC等開發(fā)環(huán)境,使用圖形化編輯語言G編寫程序。LabVIEW軟件是NI設(shè)計平臺的核心,具有開發(fā)周期短、成本低、用戶界面友好、維護方便等優(yōu)點,是開發(fā)測量和控制系統(tǒng)的理想選擇。但是LabVIEW本身不具備數(shù)據(jù)庫訪問功能,需要通過其他輔助工具實現(xiàn)數(shù)據(jù)庫的連接和訪問。本文通過對LabVIEW訪問Access數(shù)據(jù)庫的常用方法進行研究,給出了各種連接數(shù)據(jù)庫的實現(xiàn)方式,有效地對Access數(shù)據(jù)庫進行管理。
LabVIEW Database Connectivity Toolkit是NI公司為LabVIEW用戶提供的一種專門和數(shù)據(jù)庫連接的工具包,為大多數(shù)的數(shù)據(jù)庫操作乃至一些高級數(shù)據(jù)庫訪問功能提供了有效便捷的接口[3]。同時,該工具包在底部集成了SQL語言,只需要一些簡單的SQL語句即可完成對數(shù)據(jù)庫的創(chuàng)建表、添加數(shù)據(jù)、刪除數(shù)據(jù)等一系列操作,使其變得簡單快捷。
在對某個Access數(shù)據(jù)庫文件進行數(shù)據(jù)操作前,首先建立該文件的DSN(Data Source Names)連接參數(shù),選擇Microsoft Office 12.0 Access Database Engine OLE DB Provider,測試文件所在位置及其相關(guān)屬性成功后,Database Connectivity Toolkit工具包中的DB算子便可隨意訪問與之關(guān)聯(lián)的Access數(shù)據(jù)庫文件[4]。
利用Open Connection算子建立與目標數(shù)據(jù)庫文件的聯(lián)系,調(diào)用創(chuàng)建表格算子自定義創(chuàng)建一個名稱為“teststudent”的表,包含學(xué)號、姓名、性別、選修課程、學(xué)分、成績、是否補考等字段名。采用Insert Data算子在“teststudent”表格中依次插入兩條數(shù)據(jù):“S0001、張三、男、電子信息、2、80、否”與“S0002、李梅、女、電力系統(tǒng)、3.5、57.5、是”。程序運行結(jié)果如圖1所示。
DataBase工具包中提供了DB Tools List Columns,DB Tools Select Data,Database Variant To Data等算子來幫助用戶獲取已知Access數(shù)據(jù)庫文件中任意行列中的數(shù)據(jù),并將其顯示在前面板的表格中,Delete Data算子可刪除特定行列的數(shù)據(jù)。同時也可以利用自定義的SQL語言編寫查詢語句進行特定查詢[5-7]。程序運行結(jié)果如圖2所示。
圖1 建立空表顯示、插入數(shù)據(jù)程序輸入界面和Access文件顯示
圖2 利用SQL語言獲取已有數(shù)據(jù)
ActiveX是微軟公司推出的一種技術(shù)集的統(tǒng)稱,可以允許用戶對單獨程序重復(fù)使用代碼并將其連接成一個集成的總程序,是一種基于組件對象模型(Component Object Model,COM)的技術(shù)。在LabVIEW中調(diào)用ActiveX的基本思路如圖3所示[8]。
圖3 LabVIEW訪問ActiveX的基本流程
選擇ActiveX類別的Catalog對象,引用調(diào)用函數(shù)算子,通過Create方法實現(xiàn)數(shù)據(jù)庫的創(chuàng)建,然后調(diào)用關(guān)閉自動化算子斷開連接。程序運行結(jié)果如圖4所示。該程序可以循環(huán)建立多個不同的Access數(shù)據(jù)庫文件,當(dāng)建立的數(shù)據(jù)庫文件相同或在該路徑下已經(jīng)存在時會報錯并提示修改。
圖4 創(chuàng)建數(shù)據(jù)庫前面板界面
由于ADO對象的多樣性,LabVIEW ActiveX連接訪問Access數(shù)據(jù)庫可分為兩種方法,一種是利用Application對象,另一種是利用Connection對象。
2.2.1 采用Application對象
利用Automation Open算子與調(diào)用節(jié)點算子打開需要添加表及數(shù)據(jù)的Access數(shù)據(jù)庫文件,引用DataBase節(jié)點的“Execute”方法和“Query”接口自定義輸入SQL語句執(zhí)行文件的數(shù)據(jù)操作[9-10]。利用“create table teststudent(學(xué)號 char(50),姓名 char(50),性別 char(50),選修課程 char(50),學(xué)分 double,成績 double,是否補考 char(50))”SQL語句建立包含學(xué)號、姓名、性別、選修課程、學(xué)分、成績、是否補考等字段名的teststudent表,輸入“insert into teststudent(學(xué)號,姓名,性別,選修課程,學(xué)分,成績,是否補考) values(“S0001”,“張三”,“男”,“電子信息”,“2”,“80”,“否”)”語句將數(shù)據(jù)添加至該表的各個字段下。同時,也可以通過調(diào)用連接字符串算子利用可視化輸入的方式自定義循環(huán)添加各類數(shù)據(jù)。程序界面及部分程序如圖5所示。
2.2.2 采用Connection對象
在該方法中,本文調(diào)用自動化句柄中Connection方法算子的Open節(jié)點,在“ConnectionString”輸入端輸入Access數(shù)據(jù)庫文件路徑,并通過“Provider = Microsoft.ACE.OLEDB.12.0;Data Source=”語句建立Microsoft Office軟件的連接。調(diào)用Excute節(jié)點的“CommandText”端為SQL語句輸入端口,通過SQL命令執(zhí)行相關(guān)的數(shù)據(jù)操作[11]。在命令輸入框中輸入指令建立包含工號、教師姓名、性別、政治面貌、最高學(xué)歷、職稱、教授課程等字段名的testteacher表,利用Insert into.vi和delete.vi可實現(xiàn)數(shù)據(jù)的插入和刪除等操作。程序運行界面與結(jié)果如圖6所示,其中DATA表格顯示實時的數(shù)據(jù)讀取,TRANS DATA表格是DATA表格的轉(zhuǎn)置。當(dāng)輸入的SQL語句錯誤時,彈出報錯窗口。
圖5 SQL添加數(shù)據(jù)、自定義添加數(shù)據(jù)程序運行界面及部分程序
圖6 采用Connection對象執(zhí)行數(shù)據(jù)操作
LabSQL工具包是一個安全免費且開源的LabVIEW與數(shù)據(jù)庫連接訪問工具,通過將復(fù)雜的底層ADO與SQL操作集成封裝在一系列VI中,從而方便用戶通過LabVIEW程序框圖中的用戶庫就可以直接訪問Microsoft Office的數(shù)據(jù)庫,并執(zhí)行相關(guān)的數(shù)據(jù)操作,具有易于理解、操作簡單、完全開源等優(yōu)點。本文采用LabSQL Release 1.1a版本[12-13],訪問流程如圖7所示。
圖7 利用LabSQL工具訪問Access數(shù)據(jù)庫流程
采用SQL Execute算子在命令輸入框中輸入指令可執(zhí)行例如建立包含各類字段名的表、添加表記錄、刪除數(shù)據(jù)等操作。程序及運行結(jié)果如圖8所示。
基于LabVIEW的Access數(shù)據(jù)庫訪問一般有本文研究的3種方法,連接訪問數(shù)據(jù)庫時均包含數(shù)據(jù)庫連接、執(zhí)行操作、斷開連接3個步驟。這3種方法各有各的特點,對比如表1所示。在基本的數(shù)據(jù)操作支持方面,3種方法都有實踐簡單、操作便捷、用戶界面友好等優(yōu)點,可以滿足用戶借助LabVIEW平臺開發(fā)Access數(shù)據(jù)庫的需要。
圖8 利用LabSQL工具執(zhí)行相關(guān)數(shù)據(jù)操作
表1 3種方法特點的對比