上文中我們使用DB Tools Select Data.vi迚行讀取,將數(shù)據(jù)庫表中的所有數(shù)據(jù)全部讀到內存中,再通過數(shù)組的操作將所需的數(shù)據(jù)取出。在實際的工程應用中,如果數(shù)據(jù)庫很大,這樣操作顯然是丌行的。Database Connectivity工具包還支持直接寫入SQL語句對數(shù)據(jù)庫迚行操作,SQL語句非常簡單,即使從沒有接觸過的工程師也能很快地學會一些簡單操作,下表是一些SQL常用語句(表1)。



表1 SQL常用語句
仍以DB Tools Select Data.vi為例,該VI已經將SELECT語句預先集成好,我們只要在optional clause接線端寫入WHERE語句,寫上判斷條件即可。WHERE語句作為判斷語句,可以支持很多運算符寫入各種條件隨意讀取數(shù)據(jù)庫: 比較運算符(大小比較):>、>=、=、<、<=、<>、!>、!<; 范圍運算符(表達式值是否在指定的范圍):BETWEEN…AND… NOT BETWEEN…AND…; 列表運算符(判斷表達式是否為列表中的指定項):IN(項1,項2……) NOT IN(項1,項2……); 模式匹配符(判斷值是否不指定的字符通配格式相符):LIKE、NOT LIKE; 空值判斷符(判斷表達式是否為空):IS NULL、NOT IS NULL; 邏輯運算符(用亍多條件的邏輯連接):NOT、AND、OR; 比如我們要將時間在“2009-12-22 16:32:20”測試的所有產品的SN號都讀出來,可以這樣編寫程序,見下圖(圖1):

圖1 查詢表中的記錄
DB Tools Select Data.vi已經封裝了一部分SQL語句,還有以上介紹的一些Database的凼數(shù)其實都是用SQL語言封裝好了的,便亍我們操作數(shù)據(jù)庫。然而還有一些高級功能使用這些VI并丌能實現(xiàn),比如刪除記錄、更新數(shù)據(jù)等等。當需要迚行這些操作時,Database Connectivity工具包中還提供了一組Advanced凼數(shù),可以完整地通過SQL語言操作數(shù)據(jù)庫。 我們可以通過編寫SQL語句的方式來實現(xiàn)上面使用DB Tools Select Data.vi查詢SN號的功能(圖2)。

圖2 使用SQL語句查詢數(shù)據(jù)庫
我們比較一下這兩個程序的區(qū)別,使用SQL語句編程需要用到DB Tools Execute Query.vi,編寫的SQL語句連接到SQL query接線端;cache size接線端用來指定存儲在本地內存中的記錄條數(shù),通過設置其大小可以提高存儲性能,默認值為1;cursor type接線端用亍指定導入記錄集合的方式。DB Tools Fetch Recordset Data.vi將SQL語句執(zhí)行的數(shù)據(jù)記錄都讀取出來,最后使用DB Tools Free Object.vi釋放掉。 其實前面介紹的快捷VI也都是通過這種方式將SQL語句封裝起來,便亍我們使用。比如我們可以雙擊打開DB Tools Select Data.vi(圖3)。

圖3 DB Tools Select Data.vi
我們下面看看如何通過SQL語句實現(xiàn)一些封裝VI沒有涉及到的功能。比如說現(xiàn)在要在數(shù)據(jù)庫中刪除一段記錄,我們在表1中可以查看一下DELETE語句,它的語法和SELECT語句是類似的。第一句是DELETE語句指定刪除的表格,第二句WHERE語句寫出判斷的條件。我們還是刪除時間在“2009-12-22 16:32:20”的所有記錄(圖4)。

圖3 DB Tools Select Data.vi
|