第12章 訪問數(shù)據(jù)庫_第1頁
第12章 訪問數(shù)據(jù)庫_第2頁
第12章 訪問數(shù)據(jù)庫_第3頁
第12章 訪問數(shù)據(jù)庫_第4頁
第12章 訪問數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第12章訪問數(shù)據(jù)庫當(dāng)編寫記錄采集數(shù)據(jù)、存儲(chǔ)文件信息、回放存儲(chǔ)波形等應(yīng)用程序功能模塊時(shí),通常需要使用數(shù)據(jù)庫訪問技術(shù)。相對(duì)于文件系統(tǒng)使用數(shù)據(jù)庫可以方便地實(shí)現(xiàn)大量數(shù)據(jù)的存儲(chǔ)、管理和條件查詢。LabVIEW本身不能直接訪問數(shù)據(jù)庫,但是可以通過使用以下方法來實(shí)現(xiàn)LabVIEW對(duì)數(shù)據(jù)庫訪問。(1)利用LabVIEW的ActiveX功能調(diào)用ADO控件,使用SQL語言訪問數(shù)據(jù)庫(2)利用免費(fèi)數(shù)據(jù)庫工具包LabSQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問(3)利用LabVIEW中的DLL接口間接訪問數(shù)據(jù)庫(4)利用NI提供的專門的數(shù)據(jù)庫訪問工具包DatabaseConnectivityToolkit實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問12.1MicrosoftADO

12.1.1MicrosoftADO基礎(chǔ)知識(shí)ADO(ActiveXDataObjects,ActiveX數(shù)據(jù)對(duì)象)是Microsoft提出的應(yīng)用程序接口(API)用以實(shí)現(xiàn)訪問關(guān)系或非關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)。ADO訪問數(shù)據(jù)源的特點(diǎn)可以概括如下。(1)易于使用,可以說這是ADO最重要的特點(diǎn)之一。(2)可以訪問多種數(shù)據(jù)源,使應(yīng)用程序具有很好的通用性和靈活性。(3)訪問數(shù)據(jù)源效率高,高速度,低內(nèi)存,占磁盤控件小。(4)有遠(yuǎn)程數(shù)據(jù)服務(wù)功能,方便的Web應(yīng)用。(5)只需創(chuàng)建一個(gè)Connection對(duì)象就可以有多個(gè)獨(dú)立Recordset對(duì)象使用它。12.1.2MicrosoftADO的對(duì)象模型ADO通過編程模型實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的操作。編程模型意味著對(duì)象模型,即響應(yīng)并執(zhí)行編程模型的“對(duì)象”組。對(duì)象包含的參數(shù)類型有:方法、屬性和事件。ADO的目的是訪問、編輯和更新數(shù)據(jù)源。它提供執(zhí)行以下的操作方式。(1)建立與數(shù)據(jù)源的連接(Connection),可選。(2)創(chuàng)建表示命令(如SQL命令)的對(duì)象(Command),可選。(3)在SQL命令中指定列、表和值作為變量參數(shù)(Parameter),可選。(4)執(zhí)行命令(Command、Connection或Recordset)。(5)如果命令以行返回,則將行存儲(chǔ)在緩存中(Recordset)。(6)創(chuàng)建緩存視圖以便對(duì)數(shù)據(jù)進(jìn)行排序、過濾和定位(Recordset),可選。(7)通過添加、刪除或更改行和列來編輯數(shù)據(jù)(Recordset)。(8)適當(dāng)情況下,用緩存中的更改內(nèi)容來更新數(shù)據(jù)源(Recordset)。(9)在使用事務(wù)之后,可以接受或拒絕在事務(wù)中所做的更改,結(jié)束事務(wù)(Connection)。ADO對(duì)象模型包含有9個(gè)對(duì)象。(1)連接對(duì)象(2)命令對(duì)象(3)記錄集對(duì)象(4)記錄對(duì)象(5)數(shù)據(jù)流對(duì)象(6)字段對(duì)象(7)參數(shù)對(duì)象(8)屬性對(duì)象(9)錯(cuò)誤對(duì)象1.連接對(duì)象對(duì)象模型用connection對(duì)象來體現(xiàn)連接的概念。通過連接(Connection)可從應(yīng)用程序訪問數(shù)據(jù)源,連接是交換數(shù)據(jù)所必需的環(huán)境。2.命令對(duì)象對(duì)象模型用Command對(duì)象來體現(xiàn)參數(shù)的概念。“命令”通過已建立的連接發(fā)出,它能以某種方式操作數(shù)據(jù)源。命令通??梢栽跀?shù)據(jù)源中添加、刪除或更新數(shù)據(jù),或者以表中行的格式檢索數(shù)據(jù)。3.記錄集對(duì)象對(duì)象模型用Recordset對(duì)象對(duì)來自提供者的數(shù)據(jù)進(jìn)行操作。使用ADO時(shí),將幾乎全部使用Recordset對(duì)象來對(duì)數(shù)據(jù)進(jìn)行操作。所有Recordset對(duì)象均由記錄(行)和字段(列)組成。某些Recordset方法或?qū)傩钥赡懿豢捎?,這取決于提供者支持的功能。4.字段對(duì)象對(duì)象模型用Field對(duì)象來體現(xiàn)字段。Recordset的一行由一個(gè)或多個(gè)“字段”組成。如果把Recordset看作二維網(wǎng)格,排成行的字段將構(gòu)成“列”。每一字段(列)都分別具有名稱、數(shù)據(jù)類型和值等屬性。正是在這個(gè)值中包含了來自數(shù)據(jù)源的實(shí)際數(shù)據(jù)。除了包含有9個(gè)對(duì)象外,ADO對(duì)象模型還包含有4個(gè)集合。集合也是一種對(duì)象,它可方便地包含其他特定類型的對(duì)象。使用集合屬性可按名稱(文本字符串)或序號(hào)(整數(shù))對(duì)集合中的對(duì)象進(jìn)行檢索。(1)Errors集合

(2)Parameters集合

(3)Fields集合

(4)Properties集合

ADO對(duì)象包含屬性,可通過INTEGER、CHARACTER或BOOLEAN等公用數(shù)據(jù)類型在其中設(shè)置或檢索值。12.2SQL數(shù)據(jù)庫語言SQL(StructuredQueryLanguage,結(jié)構(gòu)查詢語言)是一個(gè)功能強(qiáng)大的數(shù)據(jù)庫語言,集數(shù)據(jù)查詢(DataQuery)、數(shù)據(jù)操作(DataManipulation)、數(shù)據(jù)定義(DataDefinition)和數(shù)據(jù)控制(DataControl)于一體,常用于數(shù)據(jù)庫的通信。與C、Pascal等語言不同,SQL沒有循環(huán)結(jié)構(gòu)(如if-then-else、do-while)以及函數(shù)定義等的功能。而且SQL只有一個(gè)數(shù)據(jù)類型的固定設(shè)置,換句話說,用戶不能在使用其他編程語言的時(shí)候創(chuàng)建自己的數(shù)據(jù)類型。12.2.1SQL基礎(chǔ)知識(shí)SQL語言支持關(guān)系數(shù)據(jù)庫三級(jí)模式結(jié)構(gòu),如圖12-1所示。其中外模式對(duì)應(yīng)于視圖和部分基本表,模式對(duì)應(yīng)于基本表,內(nèi)模式對(duì)應(yīng)于存儲(chǔ)文件。圖12-1SQL對(duì)關(guān)系數(shù)據(jù)庫模式的支持(1)DML(DataManipulationLanguage,數(shù)據(jù)操作語言):用于檢索或修改數(shù)據(jù)。DML可以細(xì)分為以下幾個(gè)語句:SELECT:用于檢索數(shù)據(jù)INSERT:用于增加數(shù)據(jù)到數(shù)據(jù)庫UPDATE:用于從數(shù)據(jù)庫中修改現(xiàn)存的數(shù)DELETE:用于從數(shù)據(jù)庫中刪除數(shù)據(jù)(2)DDL(DataDefinitionLanguage,數(shù)據(jù)定義語言):用于定義數(shù)據(jù)的結(jié)構(gòu),比如創(chuàng)建、修改或者刪除數(shù)據(jù)庫對(duì)象;DDL語句可以用于創(chuàng)建用戶和重建數(shù)據(jù)庫對(duì)象。DDL命令主要有:CREATETABLE:建立關(guān)系模式ALTERTABLE:修改關(guān)系模式DROPTABLE:刪除關(guān)系模式CREATEINDEX:建立索引DROPINDEX:刪除索引(3)DCL(DataControlLanguage,數(shù)據(jù)控制語言):用于設(shè)置或者更改數(shù)據(jù)庫用戶權(quán)限的語句。下面是幾個(gè)DCL命令:ALTERPASSWORD:修改密碼GRANT:授予訪問權(quán)限REVOKE:解除訪問權(quán)限12.2.2常用SQL編程語句1.創(chuàng)建表CREATTABLE語句用于創(chuàng)建和定義新的基本表。其語法格式為:CREATTABLE<表名>(<列名><數(shù)據(jù)類型>[列級(jí)完整性約束條件][,<列名><數(shù)據(jù)類型>[列級(jí)完整性約束條件]]...[,<表級(jí)完整性約束條件>]);2.改基本表

ALTERTABLE語句用于在一個(gè)關(guān)系模式中增加、刪除或修改基本表屬性。其語法格式為:ALTERTABLE<表名>[ADD<新列名><數(shù)據(jù)類型>[完整性約束]][DROP<完整性約束名>][MODIFY<列名><數(shù)據(jù)類型>];3.刪除表DROPTABLE語句用于刪除一個(gè)基本表,其語法格式為:DROPTABLE<表名>4.插入數(shù)據(jù)行INSERT語句用于向數(shù)據(jù)庫表中添加新的行數(shù)據(jù)。其語法格式為:INSERTINTO<表名>[(<屬性列1>,<屬性列2>...)]VALUES(常量1,常量2,...);如果INSERTINTO語句沒有指定任何列名,則必須為每個(gè)屬性列賦值,且排列順序必須和數(shù)據(jù)庫表中的屬性列一致;如果只有部分屬性列沒指定,則新記錄在這些指定列中取空值。5.查詢SELECT語句是數(shù)據(jù)庫操作中使用最多的語句,掌握SELECT語句是熟練應(yīng)用數(shù)據(jù)庫的基礎(chǔ)。SELECT語句的語法格式為:SELECT[ALL│DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]...FROM<表名或視圖名>[,<表名或視圖名>]...[WHERE<條件表達(dá)式>][GROUPBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC│DESC]];運(yùn)算符描述使用方法數(shù)值常量1234‘’“”字符(串)常量‘a(chǎn)bcd’“abcd”{}日期常量{3/12/7}{12:11:17}.T.,.F.邏輯常量.T.,.F.()優(yōu)先運(yùn)算符(A+B)*(C-D)+-加減A+B,C-D*/乘/除A*B,C/D+-正負(fù)-A+字符串連接符‘txta’+‘txtb’=等于Wherea=b<>大于小于WHEREa>b表12-1 常見運(yùn)算符>=<=大于等于小于等于WHEREa>=bIN,NOTIN判斷表達(dá)式是否包含列表中指定項(xiàng)WHEREaIN(‘a(chǎn)pple’,‘egg’)ANYALL否個(gè)值所有值WHEREa>=ANY大于等于子查詢中的某個(gè)值BETWEEN指定值的范圍WHEREcBETWEENaANDb(c在a和b之間)EXISTSNOTEXISTS存在判斷WHEREEXISTS(SELECT*FROM…WHERE…)LINK/NOTLINK模糊查詢,常用于字符串匹配WHEREnameLINK‘SUN’NULL/NOTNULL判斷表達(dá)式是否為空WHEREgradeISNULLWHEREgradeNOTNULL+連接運(yùn)算符<表達(dá)式1>+<表達(dá)式2>NOTANDOR非與或WHEREa=1ANDb<=100*所有列SELECT*FROMtable1運(yùn)算符描述使用方法續(xù)表12.3通過LabSQL訪問數(shù)據(jù)庫12.3.1LabSQL工具包概述LabSQL是一個(gè)免費(fèi)開源的數(shù)據(jù)庫訪問工具包,它是第三方公司的產(chǎn)品。通過它可以訪問和操作任何基于ODBC的數(shù)據(jù)庫,包括SQLServer、Access以及Oracle等。LabSQL內(nèi)包含很多VI,通過調(diào)用這些特殊功能的VI可以方便地實(shí)現(xiàn)數(shù)據(jù)庫的訪問。使用LabSQL訪問數(shù)據(jù)庫實(shí)質(zhì)是通過使用MicrosoftADO及SQL語言實(shí)現(xiàn)數(shù)據(jù)庫的訪問。LabSQL把底層的ADO操作模塊化封裝,主要分為三大模塊,命令模塊、連接模塊、記錄集模塊,如圖12-2所示。圖12-2LabSQLADO函數(shù)選板12.3.2數(shù)據(jù)源的兩種創(chuàng)建方法在使用LabSQL前,需要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)源并建立數(shù)據(jù)庫的連接。在實(shí)際工程中會(huì)經(jīng)常使用SQLServer數(shù)據(jù)庫和Access數(shù)據(jù)庫。下面講解如何利用這兩種數(shù)據(jù)庫來新建一個(gè)名為liu的數(shù)據(jù)庫,并在數(shù)據(jù)庫中新建一個(gè)名為ziliao的表。1.在SQLServer中創(chuàng)建數(shù)據(jù)庫的步驟圖12-3新建數(shù)據(jù)庫

圖12-4表格設(shè)置窗口2.在Access中創(chuàng)建數(shù)據(jù)庫的步驟圖12-5新建表對(duì)話框圖12-6設(shè)計(jì)視圖方法創(chuàng)建的表界面12.3.3數(shù)據(jù)源的三種連接方式在Labview中常用的數(shù)據(jù)源連接方式有三種:使用ODBC設(shè)定系統(tǒng)數(shù)據(jù)源的方式連接;使用UDL文件的方式連接數(shù)據(jù)源;以字符串的形式輸入連接信息。1.使用ODBC設(shè)定系統(tǒng)數(shù)據(jù)源的方式連接圖12-7ODBC管理器

圖12-8數(shù)據(jù)源驅(qū)動(dòng)選擇對(duì)話框圖12-9ODBC數(shù)據(jù)源配置向?qū)Т翱?.使用UDL文件的方式連接數(shù)據(jù)源UDL文件是指通用數(shù)據(jù)連接文件,用于保存連接字符串。3.以字符串的形式輸入連接信息ConnectionString端子用于設(shè)置或返回建立連接數(shù)據(jù)源的細(xì)節(jié)信息。12.3.4LabSQL中的數(shù)據(jù)操作【例12-8】數(shù)據(jù)庫的基本操作技巧。圖12-10表math1.條件查詢圖12-11條件查詢2.插入數(shù)據(jù)圖12-12插入數(shù)據(jù)3.修改數(shù)據(jù)圖12-13修改數(shù)據(jù)圖12-14修改數(shù)據(jù)24.刪除數(shù)據(jù)圖12-15刪除數(shù)據(jù)圖12-16刪除數(shù)據(jù)(2)12.4通過ADO控件訪問數(shù)據(jù)庫ADO對(duì)象在LabVIEW中是以ActiveX對(duì)象的形式提供的。LabVIEW自4.1版本就引入了支持ActiveX自動(dòng)控制的功能模塊,在5.1版本之后支持客戶和服務(wù)器雙方,即盡管程序是各自獨(dú)立存在的,但它們的信息是共享的。這種信息共享是通過客戶端使用由服務(wù)器端發(fā)布的ActiveX控件來實(shí)現(xiàn)的。圖12-17LabVIEW中調(diào)用ADO

訪問數(shù)據(jù)庫的程序流程【例12-9】在前面使用數(shù)據(jù)庫中sun.mdb的表math中插入一組數(shù)據(jù)。(1)建立ADO對(duì)象圖12-18選擇ADO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論