資源描述:
《sqlite在嵌入式webserver中的應(yīng)用研究》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、·22·ComputerEraNo.52010SQLite在嵌入式WebServer中的應(yīng)用研究*李桂香,常赟杰(湖南工學(xué)院計(jì)算機(jī)科學(xué)系,湖南衡陽421002)摘要:介紹了SQLite的基本特點(diǎn),詳細(xì)介紹了SQLite的內(nèi)部結(jié)構(gòu)和基本的API函數(shù),著重說明了在嵌入式WebServer中,通過CGI程序與SQLite數(shù)據(jù)庫連接的原理和方法,給出了一個SQLite在嵌入式WebServer中成功應(yīng)用的實(shí)例。關(guān)鍵詞:嵌入式WebServer;SQLite數(shù)據(jù)庫;API;CGIResearchonApplica
2、tionofSQLiteinEmbeddedWebServerLIGui-xiang,CHANGYun-jie(Dept.ofComputerScience,HunanInstituteofTechnology,Hengyang,Hunan421002,China)Abstract:ThebasiccharacteristicsofSQLitearepresented,andtheinnerstructureandfundamentalAPIfunctionsofSQLiteareintroducedi
3、ndetail.TheprincipleandmethodofconnectingtoSQLitedatabasethroughCGIprograminembeddedWebServerareexplainedemphatically.AnexampleofSQLiteappliedinembeddedWebServersuccessfullyisgiven.Keywords:embeddedWebServer;SQLitedatabase;API;CGI0引言頁,都會用到SQLite的接口函數(shù)和CGI
4、技術(shù)。近年來,嵌入式WebServer技術(shù)在越來越多領(lǐng)域都得到了內(nèi)核SQL編譯器廣泛的應(yīng)用。嵌入式WebServer中引入嵌入式數(shù)據(jù)庫對數(shù)據(jù)接口詞法分析器進(jìn)行有效的管理,可以克服傳統(tǒng)的用文件方式管理數(shù)據(jù)帶來的I/O開銷大、數(shù)據(jù)共享差等缺點(diǎn)。并且,嵌入式數(shù)據(jù)庫以共享的SQL命令處理器剖析器方式對數(shù)據(jù)進(jìn)行有效的管理和控制,通過事務(wù)的方式進(jìn)行數(shù)據(jù)虛擬機(jī)代碼生成器的調(diào)度和并發(fā)控制,可以實(shí)現(xiàn)高效率的數(shù)據(jù)存取、查詢等操作。因此,在嵌入式WebServer中使用嵌入式數(shù)據(jù)庫是一種很好的做法。后端附件1嵌入式數(shù)據(jù)庫SQ
5、LiteB樹接口1.1SQLite簡介頁SQL命令處理器SQlite是D.RichardHipp開發(fā)的開源性嵌入式數(shù)據(jù)庫引操作系統(tǒng)接口擎,全部源代碼大約在3萬行左右,編譯后的程序大小250KB,甚至可以縮小至150KB左右,最多可以管理2TB的數(shù)據(jù)。它具圖1SQLite內(nèi)部結(jié)構(gòu)有三級模式的體系結(jié)構(gòu),即用戶模式、邏輯模式和存儲模式。SQLite數(shù)據(jù)庫中,可由應(yīng)用程序調(diào)用相應(yīng)的API函數(shù)來實(shí)SQlite用一個小型的C庫實(shí)現(xiàn)了嵌入式關(guān)系數(shù)據(jù)庫管理體制,現(xiàn)對數(shù)據(jù)的存取操作。常用函數(shù)有:提供了對SQL92的大多數(shù)
6、支持,包括:多表和索引、事務(wù)、視圖、⑴打開數(shù)據(jù)庫觸發(fā)和一系列的用戶驅(qū)動及其接口。intsqlite3_open(SQLite內(nèi)部結(jié)構(gòu),如圖1所示。由以下幾個組件組成:constchar*filename,//數(shù)據(jù)庫文件名SQL編譯器、內(nèi)核、后端以及附件[1]。SQLite利用虛擬機(jī)和虛intmode,//讀寫模式,0777可讀寫,04444為只讀擬數(shù)據(jù)引擎,使調(diào)試、修改和擴(kuò)展SQLite的內(nèi)核更加方便。所sqlite3**ppDb//輸出SQLite數(shù)據(jù)庫句柄有的SQL語句都被編譯成易讀的、可以在SQL
7、ite虛擬機(jī)中執(zhí));行的程序集合。打開一個數(shù)據(jù)庫時,如果不存在系統(tǒng)會自動創(chuàng)建一個。函1.2SQLite的API接口函數(shù)數(shù)的第一個參數(shù)用于指定數(shù)據(jù)庫文件名,第三個參數(shù)用于定義在嵌入式WebServer中應(yīng)用SQLite數(shù)據(jù)庫以實(shí)現(xiàn)動態(tài)網(wǎng)Sqlite3**ppDb結(jié)構(gòu)體指針,相當(dāng)于一個數(shù)據(jù)庫句柄。*基金項(xiàng)目:湖南省教育廳項(xiàng)目(09C298)計(jì)算機(jī)時代2010年第5期·23·⑵關(guān)閉數(shù)據(jù)庫返回給CGI進(jìn)程,由CGI進(jìn)程用printf()函數(shù)來產(chǎn)生HTML源intsqlite3_close(sqlite3*);/
8、/參數(shù)為打開數(shù)據(jù)庫時的句柄碼,再把執(zhí)行的結(jié)果返回給客戶端。⑶執(zhí)行SQL2SQLite在嵌入式WebServer中的應(yīng)用intsqlite3_exec(本文構(gòu)造的嵌入式WebServer如圖2所示。系統(tǒng)硬件采sqlite3*,//已經(jīng)打開的數(shù)據(jù)庫句柄用三星公司生產(chǎn)的基于ARM9核的S3c2410處理器;軟件采用constchar**sql,//要執(zhí)行的sql語句Linux操作系統(tǒng),移植了Boa服務(wù)器程序和嵌入式數(shù)據(jù)庫sqlite_callba