下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 labview訪問sqlite數(shù)據(jù)庫接口研究【摘要】 本文介紹了labview環(huán)境下利用api技術(shù)訪問開源數(shù)據(jù)庫sqlite的方法,實現(xiàn)了可跨平臺操作的數(shù)據(jù)庫。采用此種方法完成了對過程控制中歷史數(shù)據(jù)的保存、數(shù)據(jù)分析等數(shù)據(jù)庫訪問管理,并取得了較好的效果?!娟P(guān)鍵字】labview sqlite 數(shù)據(jù)庫 vxworks 跨平臺數(shù)據(jù)庫 利用labview開發(fā)應(yīng)用軟件時經(jīng)常需要對數(shù)據(jù)庫訪問,尤其是在過程控制中要大量保存歷史數(shù)據(jù)。通過數(shù)據(jù)庫訪問技術(shù),用戶可以方便的創(chuàng)建一個使用數(shù)據(jù)庫來管理大量數(shù)據(jù),存儲過程數(shù)據(jù)并且能夠分析過程結(jié)果的自動控制系統(tǒng)。但是labview本身并不具備數(shù)據(jù)庫訪問功能。據(jù)作者所知,目
2、前常見的解決這個問題的工具包都是利用labview的activex功能,把調(diào)用microsoft ado控件,和sql語言對數(shù)據(jù)庫的訪問進(jìn)行了不同程度封裝。 使得即使不了解microsoft ado控件以及sql語言也可以操作數(shù)據(jù)庫。由于這些工具包都是基于ado控件的,而ado是windows系統(tǒng)的一個數(shù)據(jù)庫訪問控件,只能運行在windows平臺上,并不支持跨平臺應(yīng)用。作者近來在做的一個項目用的是vxworks的系統(tǒng)環(huán)境,現(xiàn)有的數(shù)據(jù)庫工具包不在適用。在這里我們引入了sqlite數(shù)據(jù)庫。1. sqlite數(shù)據(jù)庫簡介sqlite第一個alpha版本誕生于2000年5月。 sqlite是一款輕型的開
3、源數(shù)據(jù)庫、遵守acid的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百k的內(nèi)存就夠了。它能夠支持windows/linux/unix/vxworks等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如tcl、c#、php、java等,同樣比起mysql、postgresql這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。更多介紹可訪問其官方網(wǎng)站http:/1.1sqlite數(shù)據(jù)庫特性a. 零配置:不用安裝和管理配置。并且獨立,不需要額外依賴,只要有一個編譯好的動
4、態(tài)庫文件即可。b. 存儲在單一文件中的完整數(shù)據(jù)庫,而且不受不同操作系統(tǒng)字節(jié)順序的影響;數(shù)據(jù)庫轉(zhuǎn)移不需要格式轉(zhuǎn)換。c. 支持sql語言,數(shù)據(jù)庫操作簡單,方便程序移植。d. 數(shù)據(jù)庫可以很大,最大可以到2tb。雖然不可能會用的那么大。起碼沒有以前遇到的2gb的限制。e. 提供完整的api應(yīng)用。使用簡單。提供源代碼,可以根據(jù)需要重編譯應(yīng)用于其他平臺。2. 通過labview對sqlite數(shù)據(jù)庫訪問操作 sqlite數(shù)據(jù)庫提供了完成的api接口,我們這里通過labview的api接口功能(調(diào)用庫函數(shù)節(jié)點)來實現(xiàn)對sqlite數(shù)據(jù)庫的操作。這里我們需要一個已編譯的動態(tài)鏈接庫。由于sqlite是開源的,其源
5、代碼可以通過上去下載,并根據(jù)運行目標(biāo)編譯不同的動態(tài)鏈接庫。這里需要強調(diào)的是由于我們的開發(fā)平臺是windows系統(tǒng),需要同時編一個可用于windows系統(tǒng)的動態(tài)鏈接庫dll。以便開發(fā)使用和調(diào)試。2.1 sqlite數(shù)據(jù)的基本操作流程圖1:sqlite數(shù)據(jù)庫操作基本步驟3、 一次完成的sqlite數(shù)據(jù)庫操作包括1、打開(沒有為自動新建)數(shù)據(jù)庫;-2、編譯sql語句。由于sqlite不能直接執(zhí)行sql指令,需要將sql指令編譯成字節(jié)碼。3、執(zhí)行操作4、獲取執(zhí)行結(jié)果;5、銷毀sql指令字節(jié)碼;6、關(guān)閉數(shù)據(jù)庫。2.2 新建(或者打開已有)數(shù)據(jù)庫a、打開(新建)數(shù)據(jù)庫打開數(shù)據(jù)庫
6、用到的是sqlite3_open()。函數(shù)原型如下:int sqlite3_open(const char *filename, /* database filename (utf-8) */sqlite3 *ppdb /* out: sqlite db handle */);用這個函數(shù)開始數(shù)據(jù)庫操作。需要傳入的參數(shù)是數(shù)據(jù)庫文件的完整路徑,比如:c:test_database.db。 注:文件名不需要一定存在,如果此文件不存在,sqlite會自動建立它。如果它存在,就嘗試把它當(dāng)數(shù)據(jù)庫文件來打開。sqlite3 * 返回的是數(shù)據(jù)庫的操作句柄(引用),是一個32位有符號整型數(shù)據(jù)。函數(shù)返回值表示操作
7、是否正確,如果返回sqlite_ok(0) 則表示操作正常。圖2:labview中打開數(shù)據(jù)庫節(jié)點2.3 執(zhí)行sql語句在sqlite中提供一些已封裝的函數(shù)供直接執(zhí)行sql語句,如sqlite3_exec()、sqlite3_get_table()。這里我們主要介紹sqlite的sql執(zhí)行過程,對于sqlite中已封裝的函數(shù)請參考相關(guān)說明,這里不再闡述。通過圖1所示,我們可以看到sqlite執(zhí)行一條sql語句需要三個步驟,與之相關(guān)的函數(shù)包括:sqlite3_prepare(),sqlite3_step(),sqlite3_finalize。下面我們詳細(xì)看一下這幾個函數(shù)的作用和用法。2.3.1.
8、sql語句聲明(編譯)sqlite中并不能直接識別sql語句,在執(zhí)行sql操作前需要先將sql語句編譯成sqlite可識別的二進(jìn)制字節(jié)碼,sqlite提供了sqlite3_prepare()函數(shù)來執(zhí)行sql語句的編譯。sqlite3_prepare()函數(shù)原型為:int sqlite3_prepare( sqlite3 *db, /* database handle */ const char *zsql, /* sql statement, utf-8 encoded */ int nbyte, /* maximum length of zsql in bytes. */ sqlite3_s
9、tmt *ppstmt, /* out: statement handle */ const char *pztail /* out: pointer to unused portion of zsql */);函數(shù)返回的stmt就是已編譯的二進(jìn)制字節(jié)碼,提供給后續(xù)的操作函數(shù)。圖3:labview中編譯sql語句節(jié)點 sqlite3_prepare 接口把一條sql語句編譯成字節(jié)碼留給后面的執(zhí)行函數(shù)。 使用該接口訪問數(shù)據(jù)庫是當(dāng)前比較好的的一種方法。注:輸入的參數(shù)中只有第一個sql語句會被編譯2.3.2. 執(zhí)行sql語句在sql聲明準(zhǔn)備好之后, 需要調(diào)用sqlite3_step()來執(zhí)行:sql
10、ite3_step()函數(shù)原型int sqlite3_step(sqlite3_stmt*);圖4:labview中執(zhí)行sql語句節(jié)點在這里需要注意的是成功執(zhí)行完sqlite3_step()后并不會返回sqlite_ok(0)。在執(zhí)行insert、update、create table、drop table、delete等數(shù)據(jù)庫操作時,如果sql語句執(zhí)行成功或者正常sqlite3_step() 函數(shù)將返回 sqlite_done(101),否則將返回錯誤代碼。在執(zhí)行selete操作時,如果sql返回了查詢結(jié)果,sqlite3_step() 函數(shù)將返回 sqlite_row(100)。 注:如果
11、sql語言是selete操作,每執(zhí)行一次sqlite3_step() 函數(shù),只能返回一條查詢結(jié)果,如果要獲取多條查詢結(jié)果,則需要多次執(zhí)行sqlite3_step() 函數(shù)。如果函數(shù)的返回值是 sqlite_row(100), 那么下邊的這些方法可以用來獲得記錄集行中的數(shù)據(jù): sqlite3_column_count()函數(shù)返回結(jié)果集中包含的列數(shù)。 sqlite3_column_decltype() 則用來返回該列在 create table 語句中聲明的類型。 sqlite3_column_name() 返回第n列的字段名。 sqlite3_column_bytes() 用來返回 utf-8 編碼的blobs列的字節(jié)數(shù)或者text字符串的字節(jié)數(shù)。 sqlite3_column_text() 返回 utf-8 編碼的 text 數(shù)據(jù)。 不一定非要按照sqlite3_column_type()接口返回的數(shù)據(jù)類型來獲取數(shù)據(jù). 數(shù)據(jù)類型不同時軟件將自動轉(zhuǎn)換.2.3.3. 結(jié)束sql語句在數(shù)據(jù)庫關(guān)閉之前,所有準(zhǔn)備好的聲明都必須被釋放銷毀。在執(zhí)行了sqlite3_prepare()函數(shù)之后,任何時候都可以通過調(diào)用 sqlite3_finalize() 將一個準(zhǔn)備好的sql聲明銷毀。 sqlite3_finalize()函數(shù)原型:int sqlite3_finalize(sqlit
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年湖南勞動人事職業(yè)學(xué)院單招職業(yè)傾向性測試題庫及答案1套
- 2026年哈爾濱應(yīng)用職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試模擬測試卷及答案1套
- 2025廣東省疾病預(yù)防控制中心招聘科研助理1人(公共基礎(chǔ)知識)測試題附答案
- 2026寧波市江北區(qū)面向2026屆高校畢業(yè)生招聘高層次和緊缺人才13人筆試參考題庫及答案解析
- 2025年甘肅省定西市隴西縣福星中心衛(wèi)生院高塄分院招聘鄉(xiāng)村醫(yī)生(公共基礎(chǔ)知識)綜合能力測試題附答案
- 2026中國安能集團(tuán)科工有限公司招聘6人筆試參考題庫及答案解析
- 2025河南省人力資源開發(fā)中心有限公司招聘1人考試題庫附答案
- 2025年甘肅省隴南師范學(xué)院第二批高層次人才和急需緊缺專業(yè)技術(shù)人才引進(jìn)(20人)參考題庫附答案
- 2025廣東廣州市天河區(qū)靈秀小學(xué)招聘英語教師1人(學(xué)校自籌經(jīng)費)考試歷年真題匯編附答案
- 2025年保山市部分醫(yī)療衛(wèi)生事業(yè)單位招聘博士研究生(10人)筆試備考題庫附答案
- 廣東省大灣區(qū)2023-2024學(xué)年高一上學(xué)期期末生物試題【含答案解析】
- 第四單元地理信息技術(shù)的應(yīng)用課件 【高效課堂+精研精講】高中地理魯教版(2019)必修第一冊
- 魯科版高中化學(xué)必修一教案全冊
- 提高隧道初支平整度合格率
- 2023年版測量結(jié)果的計量溯源性要求
- 建筑能耗與碳排放研究報告
- GB 29415-2013耐火電纜槽盒
- 中國古代經(jīng)濟試題
- 軟件定義汽車:產(chǎn)業(yè)生態(tài)創(chuàng)新白皮書
- 磷石膏抹灰專項施工方案
- 水電水利工程施工質(zhì)量管理培訓(xùn)講義
評論
0/150
提交評論