LabVIEW 中利用LabSQL 訪問數(shù)據(jù)庫
虛擬儀器VI(virtual instruments)是National Instruments公司在其產(chǎn)品LabVIEW中首先提出的創(chuàng)新概念。隨著現(xiàn)代測試技術(shù)與儀器技術(shù)的發(fā)展,目前虛擬儀器概念已經(jīng)發(fā)展成為一種創(chuàng)新的儀器設(shè)計思想,成為設(shè)計復(fù)雜測試系統(tǒng)和測試儀器的主要方法和手段。同時LabVIEW也以成為測試與測量領(lǐng)域的工業(yè)標準應(yīng)用編程軟件。
但由于LabVIEW本身并不具備數(shù)據(jù)庫訪問功能,因此以LabVIEW編制的虛擬儀器系統(tǒng)需要其它輔助的方法來進行數(shù)據(jù)庫訪問。
1 LabVIEW 中與數(shù)據(jù)庫接口的方法 在基于數(shù)據(jù)庫的虛擬儀器測量測試系統(tǒng)中,很重要的一部分工作是對實時采集地的數(shù)據(jù)進行顯示、查詢、統(tǒng)計、生成報表分析等。這其中涉及的最主要的任務(wù)就是對數(shù)據(jù)的讀取和寫入,即與數(shù)據(jù)庫系統(tǒng)進行交互。據(jù)筆者所知,在LabVIEW 編程環(huán)境下,通常通過以下幾種方法來完成與數(shù)據(jù)庫的接口。
利用NI 公司的附加工具包LabVIEW SQL Toolkit 進行數(shù)據(jù)庫訪問。但是這種工具包比較昂貴,對于很多LabVIEW 用戶來講,這個價格是不可能承受的。
利用其他語言如Visual C++編寫DULL 程序訪問數(shù)據(jù)庫,再利用LabVIEW 所帶的DULL 接口訪問該程序,這樣可以實現(xiàn)間接訪問數(shù)據(jù)庫。但這樣工作量太大。
利用LabVIEW 的ActiveX 功能,調(diào)用Microsoft ADO 控件,利用SQL 語言實現(xiàn)數(shù)據(jù)庫訪問。利用這種方式進行數(shù)據(jù)庫訪問需要用戶對Microsoft ADO 控件以及SQL語言有較深的了解,并且需要從底層進行復(fù)雜的編程才能實現(xiàn)。這對于大多數(shù)用戶來講也是不現(xiàn)實的。
這幾種方法雖然都可以完成對數(shù)據(jù)庫的訪問,但各有缺點不能滿足系統(tǒng)對數(shù)據(jù)庫實時訪問的要求。本文提出通過LabVIEW 用戶開發(fā)的免費LabVIEW 數(shù)據(jù)庫訪問的工具包LabSQL來解決以上存在的問題。
2 數(shù)據(jù)庫訪問的工具包LabSQL 簡介 LabSQL 是一個免費的、多數(shù)據(jù)庫、跨平臺的LabVIEW 數(shù)據(jù)庫訪問工具包。目前的版本是LabSQL Release 1.1,LabSQL 支持Windows 操作系統(tǒng)中任何基于OBDC 的數(shù)據(jù)庫,包括Acess,SQL Server,Orcale,Pervasive,Sybase 等。LabSQL 是利用Microsoft ADO 以及SQL 語言來完成數(shù)據(jù)庫訪問,將復(fù)雜的底層ADO 及SQL 操作封裝成一系列的LabSQL VIs。利用LabSQL 幾乎可以訪問任何類型地數(shù)據(jù)庫,執(zhí)行各種查詢,對記錄進行各種操作。它的優(yōu)點是易于理解,操作簡單,不熟悉SQL 語言的用戶也可以很容易地使用。只需進行簡單地編程,就可在LabVIEW 中實現(xiàn)數(shù)據(jù)庫訪問。它還有一個最大的優(yōu)點是源代碼開放,并且是全面免費的。(注:LabSQL 的下載網(wǎng)址http://jeffreytravis.com)
Microsoft ADO 簡介:Microsoft AciveX Data Objects(ADO)是微軟最新的數(shù)據(jù)庫訪問技術(shù),可以用于編寫通過OLE DB 提供者對在數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)進行訪問和操作的應(yīng)用程序。OLE DB 是一個底層的數(shù)據(jù)訪問接口,用它可以訪問各種數(shù)據(jù)源,包括傳統(tǒng)的關(guān)系型數(shù)據(jù)庫以及電子郵件系統(tǒng)和自定義的商業(yè)對象。ADO 為用戶提供了一個OLE DB 的Automation 封裝接口。如同不同的數(shù)據(jù)庫系統(tǒng)需要它們自己的ODBC 驅(qū)動程序一樣,不同的數(shù)據(jù)源要求它們自己的OLE DB 提供者(OLE DBprovider)。
SQL 作為關(guān)系型數(shù)據(jù)庫中的一種通用的結(jié)構(gòu)化查詢語言,它的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進行溝通。SQL 語句可以用來執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫中的數(shù)據(jù),從數(shù)據(jù)庫中提取數(shù)據(jù)等。目前絕大多數(shù)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),如Orcale,Sybase,Microsoft SQL Server, Access 等都采用了SQL 語言表標準。
3 LabVIEW 中對LabSQL 的使用3.1 LabVIEW 中加入LabSQL 在LabVIEW 安裝目錄中的user.lib 文件夾中新建一個名為LabSQL 的文件夾,并將下載得到的LabSQL.zip 壓縮文件中所有文件解壓到這個文件夾中。解壓縮后的文件包括LabSQLADO functions 和Examples 兩個文件夾,以及ADO210.CHM 和README_FIRST.txt 兩個文件。再次運行時,LabVIEW 的功能模塊就會自動加載LabSQL。3.2 LabSQL 的配置
LabSQL 與數(shù)據(jù)庫之間是通過ODBC 連接,用戶需要在ODBC 中指定數(shù)據(jù)源名稱和驅(qū)動程序。因此在使用LabSQL之前,首先需要在Windows 操作系統(tǒng)中的ODBC 數(shù)據(jù)源中創(chuàng)建一個DSN(data source name,數(shù)據(jù)源名)。LabSQL 與數(shù)據(jù)庫之間的連接就是建立在DSN 基礎(chǔ)之上的。其連接流程如圖2 所示。
3.3 LabSQL VIs 分類LabSQL VIs 按照功能可分為四類:Command VIs;Connection VIs;Recordset VIs;Top Level VIs。Command VIs 的功能是完成一系列的基本ADO 操作,例如,創(chuàng)建或刪除一個Command,對數(shù)據(jù)庫中的某一個參數(shù)進行讀或?qū)懙取onnection VIs 的功能是管理LabVIEW 與數(shù)據(jù)庫之間的連接。Recordset VIs 用于對數(shù)據(jù)庫中的記錄進行各種操作,例如,創(chuàng)建或刪除一條記錄,對記錄中的某一條目進行讀或?qū)懙?。Top Level VIs 屬于頂層的LabSQL 應(yīng)用,對前三類LabSQL VIs 某些功能的封裝,例如,SQL Execute.VIs 可用于直接執(zhí)行SQL 命令。
3.4 利用LabSQL 開發(fā)的基本步驟
利用LabSQL 在數(shù)據(jù)庫操作中可實現(xiàn)應(yīng)用程序與數(shù)據(jù)庫之間的數(shù)據(jù)交互傳遞。一般的簡單操作步驟如圖3 所示。
4 LabSQL 應(yīng)用實例
本應(yīng)用實例是基于VI 的隨動測試系統(tǒng),該測試系統(tǒng)需要對事先存儲的各測試點的基本資料,標準值、上下限值進行讀取,然后與采集的數(shù)據(jù)值進行計算、判斷,并進行狀態(tài)記錄存儲和管理。其數(shù)據(jù)庫采用的是Microsoft Access 系統(tǒng),它的使用和維護較簡單,并且能夠滿足本系統(tǒng)的需要。限于篇幅,本文只對打開數(shù)據(jù)庫、查詢指定的記錄的字段值和向數(shù)據(jù)庫添加、刪除、修改記錄的實現(xiàn)方法作一下介紹,以起到拋磚引玉的作用。圖四即為筆者編寫的對數(shù)據(jù)庫進行簡單操作的框圖。
具體步驟如下:第一步:首先通過ADOCreate.vi 創(chuàng)建一個Connection對象,然后利用ADOConnection Open.vi 建立與數(shù)據(jù)庫的連接,數(shù)據(jù)庫由字符串ConnectionString“DSN=myDB”。(myDB 是一個在Windows ODBC 數(shù)據(jù)源中創(chuàng)建的一個DSN,并與想要連接的數(shù)據(jù)庫相連接。第二步:利用ADO RecordsetCreate.vi 創(chuàng)建一個Recordset 對象,然后利用ADO Recordset Open.vi 打開Recordset 對象,并同時利用SQL 查詢命令獲得數(shù)據(jù)庫表中的全部或部分記錄。第三步:通過功能選擇按鈕來選擇控制對數(shù)據(jù)庫的操作(查詢、添加、刪除、修改)。第四步:利用ADORecordset Close.vi 和ADO Connection Close.vi 關(guān)閉與數(shù)據(jù)庫之間的連接。 以上所舉的例子只是對數(shù)據(jù)庫的基本操作,如果綜合利用LabSQL 的四類VIs,就可以實現(xiàn)復(fù)雜的數(shù)據(jù)庫操作。另外注意Microsoft ADO 控件具有遠程數(shù)據(jù)庫訪問的功能,但是LabSQL 并沒有開發(fā)這一功能。
5 小結(jié)
實踐證明,在LabVIEW 利用LabSQL 數(shù)據(jù)庫訪問工具包實現(xiàn)對數(shù)據(jù)庫的訪問,比其它方式操作更簡潔,更容易理解,不用精通ActiveX 技術(shù)和SQL 語言。充分利用了現(xiàn)有的資源,就可以數(shù)據(jù)庫的實時操作,應(yīng)該是一個值得學(xué)習(xí)和推廣的方法。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6808瀏覽量
88743 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3752瀏覽量
64233
原文標題:輕松教你搞定數(shù)據(jù)庫應(yīng)用
文章出處:【微信號:gh_15eff9efd85b,微信公眾號:漫談labview學(xué)習(xí)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論