《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > SQLite嵌入式數據庫系統設計
SQLite嵌入式數據庫系統設計
摘要: SQLite嵌入式數據庫系統設計,引言隨著嵌入式系統的廣泛應用及用戶對數據處理和管理需求的不斷提高,各種智能設備與數據庫技術的緊密結合得到重視。這種數據庫不僅具有傳統數據庫的主要功能,還具有嵌入式和支持移動技術兩種特性。可以說,嵌
Abstract:
Key words :

引 言

  隨著嵌入式系統的廣泛應用及用戶對數據處理和管理需求的不斷提高,各種智能設備與數據庫技術的緊密結合得到重視。這種數據庫不僅具有傳統數據庫的主要功能,還具有嵌入式和支持移動技術兩種特性。可以說,嵌入式數據庫的發展提高了數據信息接入的普遍性,使人們隨時隨地獲取信息的愿望成為可能。
 

  1 嵌入式數據庫系統的體系結構

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

  2 SQLite的體系結構及開發技術

  SQLite是D·理查德·希普開發的用一個小型C庫實現的一種強有力的嵌入式關系數據庫管理體制。它提供對SQL92的大多數支持:多表、索引、事務、視圖、觸發和一系列的用戶接口及驅動。

  2.1 SQLite的體系結構

 SQLite體系結構

  SQLite可以分成8個主要子系統,如圖1所示。頂層是標記處理器(tokenizer)和分析器(parser)。高度優化的分析生成器可以快速生成高效率的代碼。底部是基于Knuth經過優化的B樹。這樣可以運行在可調整的頁面緩沖(pagecache)上,有助于將對磁盤的查找減到最少。再往下是頁面高速緩存。它作用在OS的抽象層之上,這樣的安排有助于數據庫的移動。體系結構的核心是虛擬數據庫引擎(VDBE)。VDBE完成與數據操作相關的全部操作并且是客戶和儲存之間進行信息交換的中間單元。它是SQLite的核心。在SQL語句被分析之后,VDBE開始起作用。代碼生成器將分析樹翻譯成一個袖珍程序,隨后這些袖珍程序被組合成用VDBE虛擬機器語言表示的一系列指令。如此往復,VDBE執行每條指令,最終完成SQL語句指定的查詢要求。VDBE的機器語言由圍繞數據庫管理的128個操作碼(op—code)組成。對于打開表、查詢索引、存儲和刪除記錄以及很多其他數據庫操作都有對應的操作碼。VDBE里的每條指令由1個操作碼和3個操作數(operand)組成。一些指令使用全部3個操作數,也有些指令一個也未使用。這完全取決于指令的性質。例如Open指令用于打開一個表的指針,使用了全部3個操作數:第1個操作數(P1)包含指針的ID號,第2個操作數(P2)指出表的根位置(或者表的首頁位置),第3個操作數是表的名字。

  2.2 SQLite開發技術

  SQLite的API易于使用,只需要3個用來執行SQL和獲得數據的函數。它還是可擴展的,允許程序員自定義函數,然后通過callback()函數集合進去。開放源碼團體已經擴展了眾多的客戶接口、適配器、驅動等,這就使得其他語言使用SQLite也成為可能。

  使用C語言API只需要三步。首先,提供文件名和訪問模式,來調用sqlite_open()連接數據庫。然后,執行callback()函數,SQLite通過對每個記錄執行callback()函數獲得從數據庫那里得到的結果。最后,如果想執行一個SQL查詢并獲得一個callback()函數的指針,可以調用sqlite_exec()。另外還可以調用sqlite3_get_table()函數獲得數據表單的內容。

  SQLite還提供了存取二進制大對象(BLOB)的方法,同時在線程安全、數據庫管理、API的擴展等方面也都提供了強大方便的技術支持。

  3 SQLite在ARM9開發板上的編譯及拷貝

  在SQLite官方網www.sqlite.org下載SQLite-3.3.8版本,在終端解壓生成SQLite-3.3.8目錄。進入此目錄,對sqlite/src/sqliteInt.h作一定的修改,以確保btree(B樹)有正確的變量大小。不同體系結構的Linux會有些差別。對于ARM-Linux可找到如下部分:

 

  這樣后面的“typedef INTPTR_TYPE ptr;”就定義為“int”類型,而不是“long long”。

  修改configure文件的內容,注釋掉相關代碼,讓系統不去檢查交叉編譯環境,否則會出現錯誤,不能生成Makefile文件。然后新建一個文件夾sqlite-arm-linux來保存將要生成的庫文件,運行以下命令進行配置:

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

  這時就可以運行make & & make install命令開始編譯,若無其他錯誤提示,則會在/../sqlite-3.3.8/sqlite-arm-linux/lib目錄下生成庫文件。主要有libsqlite3.so、libsqlite3.so.O、libsqlite3.so.O.8.6三個文件。同時在bin文件夾下生成了可執行文件sqlite3。為了減小執行文件大小,用strip命令處理去掉其中的調試信息。

庫文件生成后,可以通過NFS(網絡文件系統)把相關庫文件拷貝到ARM開發板上,設置好主機NFS服務器,啟動目標板后,執行:

  其中192.168.1.101為NFS服務器IP,這樣就把SQLite庫文件所在文件夾掛載到了目標板上,拷貝時注意加上-aRF選項,因為libsqlite3.so和libsqlite3.so.O是鏈接到Iibsqlite3.so.O.8.6的。4 嵌入式數據庫系統設計及實現

 

  對嵌入式系統而言,強大的圖形用戶接口使系統的功能更加豐富。目前有眾多的GUI可供使用,考慮到授權和價格的因素,我們在Qt/Embedded基礎上進行數據庫界面程序的開發,完成嵌入式數據庫系統的設計。Qt良好的封裝機制使Qt的模塊化程度非常高,可重用性較好。嵌入式數據庫系統的基本結構如圖2所示。

嵌入式數據庫系統結構圖

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

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

  終端下進入工程目錄,修改*.pro文件,并添加如下內容:

  這里加入了編譯程序所需庫文件的路徑以及sqlite.h頭文件的路徑。這一切做好后,開始編譯。

  tmake-o Makefile EDBMS.pro生成Makefile,將其中的編譯工具改為arm-linux-g++,加上交叉編譯的相關庫文件。然后make編譯,生成能在ARM開發板上運行的二進制文件,并且通過NFS掛載到開發板上。運行./EDBMS,會出現我們設計的窗口界面。查詢一個數據表的內容并顯示在QTable控件上,主界面效果如圖3所示。

  另外,系統運用SQL Servqr。2000作為后臺數據庫,用VB 6.O開發,通過ODBC與數據庫連接,實現后臺數據庫管理,并負責接收和處理客戶端請求。PC機與嵌入設備端則可以通過串口進行通信,以完善系統功能。這樣,一個較為完備的嵌入式數據庫系統就構建起來了。

  結 語

  本文結合嵌入式數據庫的特點,運用SQLite在ARM-Linux平臺上構建嵌入式數據庫系統。在此基礎上利用Qt設計了數據庫界面,使用SQLite的API實現數據庫的基本操作。最后對后臺數據庫的配置及串口通信機制做了簡要介紹,完成了整個嵌入式數據庫系統的構建。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产日本欧美一区二区三区| 一本色道久久88综合亚洲精品ⅰ| 亚洲天堂免费在线观看视频| 狠狠色香婷婷久久亚洲精品| 国内久久精品| 久久午夜国产精品| 一区二区三区成人精品| 欧美88av| 久久精品亚洲一区二区| 一区二区三区欧美激情| 欧美激情精品久久久久久大尺度| 国产精品超碰97尤物18| 你懂的网址国产 欧美| 久久精品导航| 亚洲午夜久久久久久久久电影院| 99视频超级精品| 亚洲一区二区三区涩| 亚洲自拍偷拍色片视频| 欧美日韩在线三区| 欧美一区午夜视频在线观看| 欧美成人免费小视频| 国产精品v一区二区三区| 国产精品第一区| 亚洲清纯自拍| 久久只精品国产| 国产精品视屏| 亚洲午夜激情在线| 亚洲美女网站| 激情六月综合| 含羞草久久爱69一区| 亚洲一区二区三区精品在线| 久久国产精品网站| 久久夜色精品国产欧美乱极品| 欧美日韩综合在线免费观看| 亚洲高清久久久| 亚洲一区欧美二区| 欧美劲爆第一页| 亚洲国产欧美国产综合一区| 欧美一区二区日韩一区二区| 久久大逼视频| 一本色道久久综合亚洲精品婷婷| 亚洲欧美中文字幕| 亚洲视频久久| 久久国产精品高清| 在线观看精品| 老司机精品导航| 久久这里只有| 男人的天堂成人在线| 久久精品免费观看| 国内精品美女av在线播放| 一区二区免费在线观看| 欧美成人亚洲成人| 日韩视频在线观看| 精品不卡一区二区三区| 国产精品国产三级国产aⅴ9色| 欧美亚洲动漫精品| 欧美精品国产精品| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲一区二区欧美| 欧美一级片一区| 久久久久久高潮国产精品视| 欧美日韩一区二区三区四区五区| 欧美成人国产| 久久嫩草精品久久久久| 久久久久久久高潮| 一本一本久久a久久精品牛牛影视| 欧美久久久久久| 久久久久久欧美| 国产精品一区二区三区久久| 亚洲美女啪啪| 亚洲国产成人久久| 国产午夜精品全部视频在线播放| 国产一区二区无遮挡| 欧美网站大全在线观看| 狠狠色狠狠色综合日日tαg| 亚洲精品久久久久久久久久久久久| 欧美大香线蕉线伊人久久国产精品| 国产精品任我爽爆在线播放| 国外成人在线视频网站| 国产婷婷97碰碰久久人人蜜臀| 欧美日韩一区二区三区免费| 欧美伊人久久| 欧美 日韩 国产一区二区在线视频| 亚洲美女精品一区| 欧美日韩一区二区三区在线视频| 亚洲精品乱码久久久久久蜜桃麻豆| 一区二区成人精品| 另类酷文…触手系列精品集v1小说| 宅男噜噜噜66一区二区| 日韩亚洲一区在线播放| 亚洲激情视频| 国产精品劲爆视频| 亚洲欧美激情视频| 欧美国产一区二区| 99xxxx成人网| 国内久久婷婷综合| 国语对白精品一区二区| 亚洲激情国产| 激情综合色综合久久| 激情欧美一区二区三区在线观看| 欧美国产激情二区三区| 好吊色欧美一区二区三区四区| 欧美国产国产综合| 久热精品视频在线观看| 欧美四级在线观看| 午夜在线一区二区| 久久先锋资源| 一区二区三区导航| 久久久噜久噜久久综合| 欧美精品少妇一区二区三区| 在线精品国产成人综合| 久久久伊人欧美| 99热在这里有精品免费| 女人天堂亚洲aⅴ在线观看| 亚洲国产91精品在线观看| 国产女人水真多18毛片18精品视频| 欧美亚洲免费高清在线观看| 国产日韩在线不卡| 在线免费日韩片| 久久精品五月婷婷| 亚洲一区自拍| 国产精品亚洲а∨天堂免在线| 欧美人成在线| 久久国产视频网站| 欧美日韩精品伦理作品在线免费观看| 国产精品国产自产拍高清av王其| 亚洲理伦电影| 欧美精品在线观看| 亚洲欧美日韩国产成人| 亚洲自拍偷拍福利| 欧美成人有码| 欧美日韩天天操| 欧美成人精精品一区二区频| 午夜精品在线| 国产亚洲一区二区三区在线观看| 99精品久久免费看蜜臀剧情介绍| 国产午夜精品久久久久久久| 欧美天堂亚洲电影院在线观看| 久久久久久久尹人综合网亚洲| 老司机成人网| 国产精品揄拍一区二区| 亚洲欧美日韩在线不卡| 欧美日韩一级视频| 国产欧美精品日韩区二区麻豆天美| 在线观看日韩av电影| 在线观看日韩av| 黑人操亚洲美女惩罚| 欧美天堂亚洲电影院在线观看| 免费看黄裸体一级大秀欧美| 亚洲小说欧美另类婷婷| 国产精品久久久久久久久借妻| 性欧美video另类hd性玩具| 亚洲综合精品四区| 久久综合99re88久久爱| 国产精品你懂的在线欣赏| 午夜国产欧美理论在线播放| 国产精品久久久一区麻豆最新章节| 国产精品v欧美精品v日韩精品| 亚洲已满18点击进入久久| 一本久久a久久精品亚洲| 99国产精品久久久久久久成人热| 欧美激情第10页| 国产精品一区二区久激情瑜伽| 国产精品欧美一区喷水| 国产日韩综合| 亚洲欧美一区二区三区久久| 欧美日韩亚洲综合| 性欧美大战久久久久久久免费观看| 亚洲免费伊人电影在线观看av| 午夜精品一区二区在线观看| 亚洲人线精品午夜| 欧美制服丝袜| 欧美久久久久久| 欧美伊人精品成人久久综合97| 免费在线一区二区| 国产在线观看精品一区二区三区| 亚洲美女精品久久| 欧美日本不卡| 欧美激情综合五月色丁香小说| 国产一区二区三区的电影| 亚洲第一毛片| 性色一区二区| 牛夜精品久久久久久久99黑人| 亚洲第一在线综合网站| 美女视频黄a大片欧美| 欧美人妖在线观看| 欧美激情精品久久久久久| 欧美视频一区二| 欧美精品少妇一区二区三区| 久久精品国产久精国产思思| 亚洲一区二区三区在线观看视频| 国产精品久久久久久久久久尿| 国产日韩欧美精品| 欧美一区二区三区四区在线观看| 欧美精品在欧美一区二区少妇| 久久精品日韩一区二区三区| 国产亚洲欧洲997久久综合| 伊大人香蕉综合8在线视| 99国产精品自拍| 午夜精品久久久久久久久久久久久| 国产精品欧美日韩一区| 欧美日韩精品二区第二页| 宅男噜噜噜66一区二区66| 亚洲精品日韩在线观看| 亚洲一区二区成人| 91久久精品一区| 91久久精品美女高潮| 91久久久亚洲精品| 国产精品扒开腿爽爽爽视频| 欧美一区二区私人影院日本| 国内偷自视频区视频综合| 亚洲一区影院| 久久久久久久久综合| 久久高清免费观看| 欧美凹凸一区二区三区视频| 午夜精品免费视频| 国产精品老牛| 亚洲视频免费| 国产欧美综合一区二区三区| 久久精品国产一区二区三区免费看| 香蕉av777xxx色综合一区| 欧美日一区二区在线观看| 欧美精品v日韩精品v韩国精品v| 麻豆乱码国产一区二区三区| 久久亚裔精品欧美| 国产精品一卡| 欧美日产国产成人免费图片| 国产亚洲观看| 欧美色精品在线视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美成人午夜激情视频| 亚洲精品视频免费在线观看| 激情亚洲一区二区三区四区| 亚洲日本电影| 久久夜色精品国产欧美乱极品| 亚洲最黄网站| 久久婷婷蜜乳一本欲蜜臀| 亚洲第一搞黄网站| 亚洲欧美一区二区在线观看| 在线亚洲欧美专区二区| 国产精品免费aⅴ片在线观看| 国产精品天美传媒入口| 欧美一区二区三区在线免费观看| 99国产精品99久久久久久| 国产精品看片资源| 久久久人成影片一区二区三区观看| 激情视频一区二区三区| 国产精品美女主播在线观看纯欲| 亚洲免费福利视频| 欧美日本韩国一区二区三区| 国产免费成人| 欧美精品久久久久久久免费观看| 国产日韩欧美麻豆| 欧美性开放视频| 国产精品久久久久久福利一牛影视| 欧美成人三级在线| 亚洲在线免费观看| 蜜桃av综合| 亚洲激情第一页| 国产精品制服诱惑| 日韩午夜电影| 激情亚洲一区二区三区四区| 中日韩男男gay无套| 欧美制服第一页| 亚洲精品小视频在线观看| 国产精品视频一| 日韩视频免费观看高清完整版| 国产精品视频99| 亚洲黄色三级| 国产精品视屏| 久久综合伊人77777麻豆| 国产精品亚洲а∨天堂免在线| 美国成人毛片| 欧美激情综合网| 欧美另类在线播放| 欧美精品一区二区高清在线观看| 欧美成ee人免费视频| 欧美天天综合网| 国产视频在线观看一区二区三区| 两个人的视频www国产精品| 精品96久久久久久中文字幕无| 免费在线视频一区| 欧美色中文字幕| 亚洲国产视频一区| 亚洲三级影院| 91久久综合| 亚洲国产一区在线| 亚洲天堂免费在线观看视频| 亚洲一区二区成人在线观看| 欧美久久久久| 亚洲国产精品综合| 国内精品写真在线观看| 久热精品在线| 韩国成人福利片在线播放| 国产午夜亚洲精品理论片色戒| 一区二区免费看| 国产精品五月天| 久久狠狠久久综合桃花| 欧美日韩另类国产亚洲欧美一级| 欧美激情乱人伦| 亚洲片区在线| 亚洲第一网站免费视频| 欧美视频一区二区三区在线观看| 亚洲第一页中文字幕| 欧美肉体xxxx裸体137大胆| 国内精品久久久久影院 日本资源| 国产精品亚洲一区二区三区在线| 欧美日韩色综合| 亚洲视频1区| 亚洲综合电影一区二区三区| 亚洲在线视频网站| 国产视频一区免费看| 亚洲国内精品在线| 91久久精品日日躁夜夜躁国产| 欧美日韩一区在线观看| 亚洲国产网站| 国产精品婷婷| 性欧美xxxx大乳国产app| 美女露胸一区二区三区| 一二三区精品福利视频| 国产一区二区三区日韩| 国产在线视频欧美| 亚洲国产合集| 久久综合给合久久狠狠色| 国产欧美一区二区三区久久人妖| 在线观看中文字幕亚洲| 亚洲在线国产日韩欧美| 在线观看日韩国产|