資源描述:
《SQLITE3經(jīng)典學(xué)習(xí)資料.pdf》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、SQLite簡(jiǎn)介1.SQLite說(shuō)明SQLite是一款輕量級(jí)數(shù)據(jù)庫(kù),是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫(kù)管理系統(tǒng).它的設(shè)計(jì)目的是嵌入式。目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百KB的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix/Android等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如C/C++,Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開(kāi)源世界著名的數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)講,它的處理速度比他們都
2、快。SQLite的版權(quán)允許無(wú)限制地應(yīng)用,不用支付任何使用和授權(quán)費(fèi)用,已經(jīng)成為了最受歡迎的開(kāi)源數(shù)據(jù)庫(kù)之一。SQLite網(wǎng)站(www.sqlite.org)同時(shí)提供SQLite的已編譯版本和源程序。SQLite的特性:?輕量級(jí)SQLite是一個(gè)輕量級(jí)數(shù)據(jù)庫(kù),本身足夠小,大致3萬(wàn)行C代碼,250K,但支持?jǐn)?shù)據(jù)庫(kù)大小至2TB。?獨(dú)立性SQLite數(shù)據(jù)庫(kù)的核心引擎不需要依賴(lài)第三方軟件,也不需要所謂的“安裝”。?隔離性SQLite數(shù)據(jù)庫(kù)中所有的信息(比如表、視圖、觸發(fā)器等)都包含在一個(gè)文件夾內(nèi),方便管理和維護(hù)。?跨平臺(tái)
3、SQLite目前支持大部分操作系統(tǒng),不至電腦操作系統(tǒng)更在眾多的手機(jī)系統(tǒng)也是能夠運(yùn)行,比如:Android。?多語(yǔ)言接口SQLite數(shù)據(jù)庫(kù)支持多語(yǔ)言編程接口。?安全性SQLite數(shù)據(jù)庫(kù)通過(guò)數(shù)據(jù)庫(kù)級(jí)上的獨(dú)占性和共享鎖來(lái)實(shí)現(xiàn)獨(dú)立事務(wù)處理。這意味著多個(gè)進(jìn)程可以在同一時(shí)間從同一數(shù)據(jù)庫(kù)讀取數(shù)據(jù),但只能有一個(gè)可以寫(xiě)入數(shù)據(jù).?開(kāi)源SQLite的源代碼是完全開(kāi)源的,良好注釋的源代碼,并且有著90%以上的測(cè)試覆蓋率,?還內(nèi)置地同時(shí)支持UTF-8和UTF-16編碼。缺點(diǎn):并發(fā)性差,沒(méi)有固定的事務(wù)日志,保密安全性不強(qiáng)。SQLite
4、簡(jiǎn)介:SQLite是D.RichardHipp于2000年開(kāi)發(fā)出來(lái)的一個(gè)自容納、可嵌入、零配置數(shù)據(jù)庫(kù)引擎的小型數(shù)據(jù)庫(kù)。它支持多數(shù)SQL92標(biāo)準(zhǔn)。SQLite3.0的C編程一共涉及到83個(gè)API函數(shù),此外還有一些數(shù)據(jù)結(jié)構(gòu)和預(yù)定義。這些接口的使用一般都不復(fù)雜,最簡(jiǎn)單的程序只要三個(gè)函數(shù)就可以完成:sqlite3_open(),sqlite3_exec()和sqlite3_close()。如果想更好地控制數(shù)據(jù)庫(kù)引擎的執(zhí)行,可以使用sqlite3_prepare()函數(shù)把SQL語(yǔ)句編譯成字節(jié)碼,然后再使用sqlite
5、3_step()來(lái)執(zhí)行編譯好的字節(jié)碼,以sqlite3_column_xxx()表示的一組函數(shù)來(lái)獲取查詢(xún)結(jié)果集中的信息,其中xxx代表返回?cái)?shù)值的數(shù)據(jù)類(lèi)型,如int、text、blob,real等。對(duì)于程序員來(lái)說(shuō),SQLite就象一個(gè)數(shù)據(jù)傳送帶,提供了一種方便的將應(yīng)用程序綁定的數(shù)據(jù)的方法。你可以操作互相關(guān)聯(lián)的數(shù)據(jù),可以完成很繁重的任務(wù)不必寫(xiě)自己的算法來(lái)對(duì)數(shù)據(jù)結(jié)構(gòu)操作和排序。SQLite的應(yīng)用:SQLite已經(jīng)被多種軟件和產(chǎn)品所使用:Apple的MacOSX操作系統(tǒng);Safari的Web瀏覽器;Mail.app
6、的電子郵件程序、RSS的管理;Apple的Aperture照片軟件;Adobe的AIR;Google的android;從這些說(shuō)明它的健壯性、穩(wěn)定性等方面不會(huì)有太大問(wèn)題。SQLite的結(jié)構(gòu)原理:SQL語(yǔ)句編譯器(Complier)由詞法處理器(Tokenize)、句法分析器(Parser)和代碼生成器(Codegenerator)組成。執(zhí)行SQL語(yǔ)句時(shí),由接口把包含該SQL語(yǔ)句的字符串傳給詞法處理器進(jìn)行詞法分析處理,把字符串分成一個(gè)一個(gè)的詞法單元,然后把處理結(jié)果再傳遞句法分析器進(jìn)行語(yǔ)法分析,它調(diào)用代碼生成器產(chǎn)
7、生能夠在虛擬機(jī)(VirtualMachine)上執(zhí)行的指令碼。VirtualMachine是為操作數(shù)據(jù)庫(kù)文件而執(zhí)行的一個(gè)抽象的計(jì)算機(jī)引擎,又稱(chēng)虛擬數(shù)據(jù)庫(kù)引擎(VDBE),它是SQLite的核心.在SQL語(yǔ)句被分析之后,代碼生成器將生成用VDBE的虛擬機(jī)器語(yǔ)言表示的一系列指令。如此反復(fù),VDBE執(zhí)行每條指令,最終完成SQL語(yǔ)句指定的查詢(xún),刪除,存儲(chǔ)等請(qǐng)求。B-Tree,是SQLite實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的模式,每個(gè)表和索引使用單獨(dú)的B-Tree,有助于的查找減到最小,快速有效。PagerCache對(duì)數(shù)據(jù)塊讀寫(xiě)提供高速
8、緩沖,同時(shí)也提供回退、原子操作及對(duì)數(shù)據(jù)庫(kù)文件加鎖,通過(guò)緩沖機(jī)制,可以避免頻繁進(jìn)行I/O操作而降低應(yīng)用程序的性能。2.數(shù)據(jù)庫(kù)接口1.sqlite3_open()連接數(shù)據(jù)庫(kù)用sqlite3_open()函數(shù),它們的聲明如下intsqlite3_open(constchar*filename,/*Databasefilename(UTF-8)*/sqlite3**ppDb/*OUT:SQLitedbhandle*/);