日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]SQLite嵌入式數(shù)據(jù)庫(kù)系統(tǒng)的研究與實(shí)現(xiàn)

引 言
    隨著嵌入式系統(tǒng)的廣泛應(yīng)用及用戶對(duì)數(shù)據(jù)處理和管理需求的不斷提高,各種智能設(shè)備與數(shù)據(jù)庫(kù)技術(shù)的緊密結(jié)合得到重視。這種數(shù)據(jù)庫(kù)不僅具有傳統(tǒng)數(shù)據(jù)庫(kù)的主要功能,還具有嵌入式和支持移動(dòng)技術(shù)兩種特性,因此通常被用在掌上電腦、PDA、車載設(shè)備、移動(dòng)電話等嵌入式設(shè)備中。這種數(shù)據(jù)庫(kù)技術(shù)的興起使人們不再受單一操作系統(tǒng)的限制,可以隨時(shí)隨地處理業(yè)務(wù)、傳遞信息??梢哉f,嵌入式數(shù)據(jù)庫(kù)的發(fā)展提高了數(shù)據(jù)信息接入的普遍性,使人們隨時(shí)隨地獲取信息的愿望成為可能。

1 嵌入式數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)
   
嵌入式數(shù)據(jù)庫(kù)將數(shù)據(jù)庫(kù)系統(tǒng)與操作系統(tǒng)和具體應(yīng)用集成在一起,運(yùn)行在各種智能嵌入式設(shè)備上。與傳統(tǒng)的數(shù)據(jù)庫(kù)系統(tǒng)相比,它一般體積較小,有較強(qiáng)的便攜性和易用性,以及較為完備的功能來實(shí)現(xiàn)用戶對(duì)數(shù)據(jù)的管理操作。但是,由于嵌入式系統(tǒng)的資源限制,它無法作為一個(gè)完整的數(shù)據(jù)庫(kù)來提供大容量的數(shù)據(jù)管理,而且嵌入式設(shè)備可隨處放置,受環(huán)境影響較大,數(shù)據(jù)可靠性較低。在實(shí)際應(yīng)用中,為了彌補(bǔ)嵌入式數(shù)據(jù)庫(kù)存儲(chǔ)容量小、可靠性低的不足,通常在PC機(jī)上配置后臺(tái)數(shù)據(jù)庫(kù)來實(shí)現(xiàn)大容量數(shù)據(jù)的存儲(chǔ)和管理。嵌入式數(shù)據(jù)庫(kù)作為前端設(shè)備,需要一個(gè)GUI交互界面來實(shí)現(xiàn)嵌入式終端上的人機(jī)交互,并通過串口實(shí)現(xiàn)和PC機(jī)上主數(shù)據(jù)源之間的數(shù)據(jù)交換,實(shí)現(xiàn)系統(tǒng)服務(wù)器端數(shù)據(jù)的管理,接收嵌入式終端上傳的數(shù)據(jù)和下載數(shù)據(jù)到嵌入式終端機(jī)等操作。


2 SQLite的體系結(jié)構(gòu)及開發(fā)技術(shù)
    SQLite是D·理查德·希普開發(fā)的用一個(gè)小型C庫(kù)實(shí)現(xiàn)的一種強(qiáng)有力的嵌入式關(guān)系數(shù)據(jù)庫(kù)管理體制。它提供對(duì)SQL92的大多數(shù)支持:多表、索引、事務(wù)、視圖、觸發(fā)和一系列的用戶接口及驅(qū)動(dòng)。
2.1 SQLite的體系結(jié)構(gòu)
    SQLite可以分成8個(gè)主要子系統(tǒng),如圖1所示。頂層是標(biāo)記處理器(tokenizer)和分析器(parser)。高度優(yōu)化的分析生成器可以快速生成高效率的代碼。底部是基于Knuth經(jīng)過優(yōu)化的B樹。這樣可以運(yùn)行在可調(diào)整的頁(yè)面緩沖(pagecache)上,有助于將對(duì)磁盤的查找減到最少。再往下是頁(yè)面高速緩存。它作用在OS的抽象層之上,這樣的安排有助于數(shù)據(jù)庫(kù)的移動(dòng)。體系結(jié)構(gòu)的核心是虛擬數(shù)據(jù)庫(kù)引擎(VDBE)。VDBE完成與數(shù)據(jù)操作相關(guān)的全部操作并且是客戶和儲(chǔ)存之間進(jìn)行信息交換的中間單元。它是SQLite的核心。在SQL語句被分析之后,VDBE開始起作用。代碼生成器將分析樹翻譯成一個(gè)袖珍程序,隨后這些袖珍程序被組合成用VDBE虛擬機(jī)器語言表示的一系列指令。如此往復(fù),VDBE執(zhí)行每條指令,最終完成SQL語句指定的查詢要求。VDBE的機(jī)器語言由圍繞數(shù)據(jù)庫(kù)管理的128個(gè)操作碼(op—code)組成。對(duì)于打開表、查詢索引、存儲(chǔ)和刪除記錄以及很多其他數(shù)據(jù)庫(kù)操作都有對(duì)應(yīng)的操作碼。VDBE里的每條指令由1個(gè)操作碼和3個(gè)操作數(shù)(operand)組成。一些指令使用全部3個(gè)操作數(shù),也有些指令一個(gè)也未使用。這完全取決于指令的性質(zhì)。例如Open指令用于打開一個(gè)表的指針,使用了全部3個(gè)操作數(shù):第1個(gè)操作數(shù)(P1)包含指針的ID號(hào),第2個(gè)操作數(shù)(P2)指出表的根位置(或者表的首頁(yè)位置),第3個(gè)操作數(shù)是表的名字。

2.2 SQLite開發(fā)技術(shù)
    SQLite的API易于使用,只需要3個(gè)用來執(zhí)行SQL和獲得數(shù)據(jù)的函數(shù)。它還是可擴(kuò)展的,允許程序員自定義函數(shù),然后通過callback()函數(shù)集合進(jìn)去。開放源碼團(tuán)體已經(jīng)擴(kuò)展了眾多的客戶接口、適配器、驅(qū)動(dòng)等,這就使得其他語言使用SQLite也成為可能。
    使用C語言API只需要三步。首先,提供文件名和訪問模式,來調(diào)用sqlite_open()連接數(shù)據(jù)庫(kù)。然后,執(zhí)行callback()函數(shù),SQLite通過對(duì)每個(gè)記錄執(zhí)行callback()函數(shù)獲得從數(shù)據(jù)庫(kù)那里得到的結(jié)果。最后,如果想執(zhí)行一個(gè)SQL查詢并獲得一個(gè)callback()函數(shù)的指針,可以調(diào)用sqlite_exec()。另外還可以調(diào)用sqlite3_get_table()函數(shù)獲得數(shù)據(jù)表單的內(nèi)容。
    SQLite還提供了存取二進(jìn)制大對(duì)象(BLOB)的方法,同時(shí)在線程安全、數(shù)據(jù)庫(kù)管理、API的擴(kuò)展等方面也都提供了強(qiáng)大方便的技術(shù)支持。

3 SQLite在ARM9開發(fā)板上的編譯及拷貝
    在SQLite官方網(wǎng)www.sqlite.org下載SQLite-3.3.8版本,在終端解壓生成SQLite-3.3.8目錄。進(jìn)入此目錄,對(duì)sqlite/src/sqliteInt.h作一定的修改,以確保btree(B樹)有正確的變量大小。不同體系結(jié)構(gòu)的Linux會(huì)有些差別。對(duì)于ARM-Linux可找到如下部分:
   

    這樣后面的“typedef INTPTR_TYPE ptr;”就定義為“int”類型,而不是“l(fā)ong long”。
    修改configure文件的內(nèi)容,注釋掉相關(guān)代碼,讓系統(tǒng)不去檢查交叉編譯環(huán)境,否則會(huì)出現(xiàn)錯(cuò)誤,不能生成Makefile文件。然后新建一個(gè)文件夾sqlite-arm-linux來保存將要生成的庫(kù)文件,運(yùn)行以下命令進(jìn)行配置:

   
    將在本目錄下生成Makefile文件。修改Makefile文件中如下語句,指定主機(jī)編譯器為GCC:

   
    這時(shí)就可以運(yùn)行make & & make install命令開始編譯,若無其他錯(cuò)誤提示,則會(huì)在/../sqlite-3.3.8/sqlite-arm-linux/lib目錄下生成庫(kù)文件。主要有l(wèi)ibsqlite3.so、libsqlite3.so.O、libsqlite3.so.O.8.6三個(gè)文件。同時(shí)在bin文件夾下生成了可執(zhí)行文件sqlite3。為了減小執(zhí)行文件大小,用strip命令處理去掉其中的調(diào)試信息。
    庫(kù)文件生成后,可以通過NFS(網(wǎng)絡(luò)文件系統(tǒng))把相關(guān)庫(kù)文件拷貝到ARM開發(fā)板上,設(shè)置好主機(jī)NFS服務(wù)器,啟動(dòng)目標(biāo)板后,執(zhí)行:


    其中192.168.1.101為NFS服務(wù)器IP,這樣就把sqlite庫(kù)文件所在文件夾掛載到了目標(biāo)板上,拷貝時(shí)注意加上-arf選項(xiàng),因?yàn)閘ibsqlite3.so和libsqlite3.so.O是鏈接到Iibsqlite3.so.O.8.6的。

4 嵌入式數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)
   
對(duì)嵌入式系統(tǒng)而言,強(qiáng)大的圖形用戶接口使系統(tǒng)的功能更加豐富。目前有眾多的GUI可供使用,考慮到授權(quán)和價(jià)格的因素,我們?cè)赒t/Embedded基礎(chǔ)上進(jìn)行數(shù)據(jù)庫(kù)界面程序的開發(fā),完成嵌入式數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)。Qt良好的封裝機(jī)制使Qt的模塊化程度非常高,可重用性較好。嵌入式數(shù)據(jù)庫(kù)系統(tǒng)的基本結(jié)構(gòu)如圖2所示。

    通過Qt的QTable控件來實(shí)現(xiàn)數(shù)據(jù)表單的顯示,通過QListView、QC20mBobox以及QTextEdit等控件進(jìn)行數(shù)據(jù)表單的選擇、數(shù)據(jù)輸入等,配合PushButton控件實(shí)現(xiàn)數(shù)據(jù)表的創(chuàng)建、刪除和數(shù)據(jù)查詢、添加、刪除、修改等操作。這樣,實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)的基本管理,并可利用串口實(shí)現(xiàn)與后臺(tái)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)交互。本系統(tǒng)利用Qt Designer實(shí)現(xiàn)數(shù)據(jù)庫(kù)界面的快速開發(fā),并通過調(diào)用SQLite的API接口函數(shù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的基本操作。下面簡(jiǎn)要介紹一下用QtDesigner開發(fā)數(shù)據(jù)庫(kù)界面的基本方法及關(guān)鍵代碼。新建一個(gè)C++項(xiàng)目,在此基礎(chǔ)上新建一個(gè)窗口部件,在窗口部件上添加一個(gè)Table控件作為數(shù)據(jù)表單的顯示界面。另根據(jù)需要,添加PushButton控件以實(shí)現(xiàn)相應(yīng)的操作。在窗口類下新建一個(gè)槽,命名為SelectSlot()。連接相關(guān)按鈕信號(hào),關(guān)鍵代碼如下:

    其中tableView函數(shù)的作用是將查詢得到的數(shù)據(jù)表顯示在Table控件中。函數(shù)體程序如下:

    終端下進(jìn)入工程目錄,修改*.pro文件,并添加如下內(nèi)容:


    這里加入了編譯程序所需庫(kù)文件的路徑以及sqlite.h頭文件的路徑。這一切做好后,開始編譯。
    tmake-o Makefile EDBMS.pro生成Makefile,將其中的編譯工具改為arm-linux-g++,加上交叉編譯的相關(guān)庫(kù)文件。然后make編譯,生成能在ARM開發(fā)板上運(yùn)行的二進(jìn)制文件,并且通過NFS掛載到開發(fā)板上。運(yùn)行./EDBMS,會(huì)出現(xiàn)我們?cè)O(shè)計(jì)的窗口界面。查詢一個(gè)數(shù)據(jù)表的內(nèi)容并顯示在QTable控件上,主界面效果如圖3所示。

    另外,系統(tǒng)運(yùn)用SQL Servqr。2000作為后臺(tái)數(shù)據(jù)庫(kù),用VB 6.O開發(fā),通過ODBC與數(shù)據(jù)庫(kù)連接,實(shí)現(xiàn)后臺(tái)數(shù)據(jù)庫(kù)管理,并負(fù)責(zé)接收和處理客戶端請(qǐng)求。PC機(jī)與嵌入設(shè)備端則可以通過串口進(jìn)行通信,以完善系統(tǒng)功能。這樣,一個(gè)較為完備的嵌入式數(shù)據(jù)庫(kù)系統(tǒng)就構(gòu)建起來了。


結(jié) 語
   
本文在對(duì)嵌入式數(shù)據(jù)庫(kù)特性研究的基礎(chǔ)上,設(shè)計(jì)出一種嵌入式數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)。結(jié)合嵌入式數(shù)據(jù)庫(kù)的特點(diǎn),運(yùn)用SQLite在ARM-Linux平臺(tái)上構(gòu)建嵌入式數(shù)據(jù)庫(kù)系統(tǒng)。在此基礎(chǔ)上利用Qt設(shè)計(jì)了數(shù)據(jù)庫(kù)界面,使用SQLite的API實(shí)現(xiàn)數(shù)據(jù)庫(kù)的基本操作。最后對(duì)后臺(tái)數(shù)據(jù)庫(kù)的配置及串口通信機(jī)制做了簡(jiǎn)要介紹,完成了整個(gè)嵌入式數(shù)據(jù)庫(kù)系統(tǒng)的構(gòu)建。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險(xiǎn)積極籌備個(gè)人養(yǎng)老金的產(chǎn)品設(shè)計(jì)和系統(tǒng)開發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產(chǎn)品,推動(dòng)商業(yè)養(yǎng)老保險(xiǎn)、個(gè)人養(yǎng)老金、專屬商業(yè)養(yǎng)老保險(xiǎn)等產(chǎn)品供給。 搭養(yǎng)老政策東風(fēng) ...

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動(dòng)的最基本功能。而對(duì)于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對(duì)于空間和生活深層關(guān)系的思考,同時(shí)也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進(jìn)程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績(jī)預(yù)告。今年前三季度,公司預(yù)計(jì)實(shí)現(xiàn)營(yíng)業(yè)收入7.54億元至8.33億元,同比增長(zhǎng)60.24%至77.03%;歸母凈利潤(rùn)預(yù)計(jì)為1.73億...

關(guān)鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經(jīng)濟(jì)和信息化局發(fā)布2022年度第一批北京市市級(jí)企業(yè)技術(shù)中心創(chuàng)建名單的通知,諾誠(chéng)健華正式獲得"北京市企業(yè)技術(shù)中心"認(rèn)定。 北京市企業(yè)技...

關(guān)鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國(guó)際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國(guó)軟件定義存儲(chǔ)及超融合市場(chǎng)研究報(bào)告》,報(bào)告顯示:2022年上半年浪潮超融合銷售額同比增長(zhǎng)59.4%,近5倍于...

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團(tuán)成立60周年的紀(jì)念日。趁著首都銀行集團(tuán)成立60周年與首都銀行(中國(guó))在華深耕經(jīng)營(yíng)12年的“大日子”,圍繞作為外資金融機(jī)構(gòu)對(duì)在華戰(zhàn)略的構(gòu)想和業(yè)...

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會(huì)社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團(tuán)公司上海通運(yùn)國(guó)際物流有限公司(Nipp...

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國(guó)進(jìn)出口商品交易會(huì)("廣交會(huì)")于"云端"開幕。本屆廣交會(huì)上高新技術(shù)企業(yè)云集,展出的智能產(chǎn)品超過140,...

關(guān)鍵字: 中國(guó)智造 BSP 手機(jī) CAN

要問機(jī)器人公司哪家強(qiáng),波士頓動(dòng)力絕對(duì)是其中的佼佼者。近來年該公司在機(jī)器人研發(fā)方面獲得的一些成果令人印象深刻,比如其開發(fā)的機(jī)器人會(huì)后空翻,自主爬樓梯等。這不,波士頓動(dòng)力又發(fā)布了其機(jī)器人組團(tuán)跳男團(tuán)舞的新視頻,表演的機(jī)器人包括...

關(guān)鍵字: 機(jī)器人 BSP 工業(yè)機(jī)器人 現(xiàn)代汽車

南京2022年10月17日 /美通社/ -- 日前《2022第三屆中國(guó)高端家電品牌G50峰會(huì)》于浙江寧波落幕,來自兩百余名行業(yè)大咖、專家學(xué)者共同探討了在形勢(shì)依然嚴(yán)峻的當(dāng)下,如何以科技創(chuàng)新、高端化轉(zhuǎn)型等手段,幫助...

關(guān)鍵字: LINK AI BSP 智能家電

嵌入式教程

6897 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉