開源sql數(shù)據(jù)庫sqlite3的移植和使用心得

開源sql數(shù)據(jù)庫sqlite3的移植和使用心得

ID:34465731

大?。?5.93 KB

頁數(shù):7頁

時間:2019-03-06

開源sql數(shù)據(jù)庫sqlite3的移植和使用心得_第1頁
開源sql數(shù)據(jù)庫sqlite3的移植和使用心得_第2頁
開源sql數(shù)據(jù)庫sqlite3的移植和使用心得_第3頁
開源sql數(shù)據(jù)庫sqlite3的移植和使用心得_第4頁
開源sql數(shù)據(jù)庫sqlite3的移植和使用心得_第5頁
資源描述:

《開源sql數(shù)據(jù)庫sqlite3的移植和使用心得》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、http://blog.csdn.net/ExclusivePig/archive/2009/09/18/4566255.aspx介紹在近幾個月以來,你也許聽過一個新的PHP數(shù)據(jù)庫擴展類庫SQLite.好多人認(rèn)為SQLite是自有面包片以來最好的東東,其提供了一個快速的訪問平面文件數(shù)據(jù)庫的接口.并且提供了訪問大容量數(shù)據(jù)庫的簡潔的手段,但是并沒有所意想的功能或者速度上的損失.在本文中,我們將探討這個新的激動人心的擴展庫,并且希望以此來驗證其傳說中的優(yōu)勢和好處.啥是SQLite?SQLite是實現(xiàn)了SQL92標(biāo)準(zhǔn)的一個大子集的嵌入式數(shù)據(jù)庫.

2、其以在一個庫中組合了數(shù)據(jù)庫引擎和接口,能將所有數(shù)據(jù)存儲于單個文件中而著名.我覺得SQLite的功能一定程度上居于MySQL和PostgreSQL之間.盡管如此,在性能上面,SQLite常???-3倍(甚至更多).這利益于其高度調(diào)整了的內(nèi)部架構(gòu),因為它除去了服務(wù)器端到客戶端和客戶端到服務(wù)器端的通信.所有這些都集在一個包中,也僅僅比MySQL的客戶端的庫稍微大一點.而令人印象深刻的特點是你可將你的整個數(shù)據(jù)庫系統(tǒng)放在其中.利用非常高效的內(nèi)存組織,SQLite只需在很小的內(nèi)存中維護(hù)其很小的尺寸,遠(yuǎn)遠(yuǎn)比其它任何數(shù)據(jù)庫系統(tǒng)都小.這些特點使得其成為在

3、需要高效地應(yīng)用數(shù)據(jù)庫的任務(wù)中一個非常方便的工具.它對我有啥用?除了速度和效率,SQLite還有其它好多的優(yōu)勢使得其能成為許多任務(wù)中一個理想的解決方案.因為SQLite的數(shù)據(jù)庫都是簡單文件,因此無須一個管理隊伍花時間來構(gòu)造復(fù)雜的權(quán)限結(jié)構(gòu)來保護(hù)用戶的數(shù)據(jù)庫.因為權(quán)限通過文件系統(tǒng)自動進(jìn)行.這也同時意味著(數(shù)據(jù)庫空間的大小只與環(huán)境有關(guān),與本身無關(guān))無段特殊的規(guī)則來了解用戶磁盤空間.用戶可以從創(chuàng)建他們想要的任意多的數(shù)據(jù)庫和對其對這些數(shù)據(jù)庫的絕對控制權(quán)而得到好處.數(shù)據(jù)庫就是一個文件的事實使用SQLite可以輕易地在服務(wù)器間移動.SQLite也除去了

4、需要大量內(nèi)存和其它系統(tǒng)資源的伺候進(jìn)程.即使當(dāng)數(shù)據(jù)庫在大量地使用時也是如此.----------------------------慣例,以上為轉(zhuǎn)載-------------------------------------開源的東西就是強大,可惜,都是老外的,我們正好相反,越好的東西(相對好些,其實問題一堆)越是藏著,掖著,然后自以為是的炫耀,收取版權(quán)費。發(fā)點牢騷!同樣源碼全是C寫的,移植非常方便,對于常見的平臺,Windows,Unix,Mac,Linux(類Unix),OS2等,只要把相應(yīng)的宏打開,直接編譯即可。但是我們的聯(lián)芯平臺用的

5、是ThreadX,官方并沒有現(xiàn)成的,因此要自己移植。這里說下SQlite3的源碼種類,有2大類,一類是amalgamation版本,這個版本只有一個.c,是所有源碼的集合,我用的就是這個版本,省去了自己寫makefile,移植更容易。另一類則是按目錄分的源碼包。下面說下SQlite3的移植:原則上SQlite3只適用于多線程的平臺,目前我還不清楚怎么往多任務(wù)但是卻無線程概念的系統(tǒng)上移植。SQlite3默認(rèn)用的是pthread庫,因此對于有了pthread庫的平臺,在線程部分不需修改,否則,要么往自己的平臺上移植pthread,要么就是把

6、SQlite3中線程接口改成自己平臺適用的,看自己需求了。另一個要一直的則是文件系統(tǒng)接口,原則上,完全可以用標(biāo)準(zhǔn)C的fopen,fclose..函數(shù)集,但是那樣的話,就不支持SQlite3的高級特性,比如數(shù)據(jù)庫加鎖啊,多線程的同步訪問啊,但是對于嵌入式設(shè)備,這些功能往往也需要擁有,因此只要將文件系統(tǒng)改成標(biāo)準(zhǔn)C的接口,或者自己平臺適用的接口。因為我聯(lián)芯的手機平臺已經(jīng)有了pthread庫,因此,我只移植了文件系統(tǒng)部分(小小得意一把,其實本來移植工作是另外一位同事的,但因為我需求比較早,所以我花了一天時間移植了一個版本,而那個同事花了整整一個

7、禮拜,他把線程都改了,佩服他的耐心?。。┪募到y(tǒng)的移植方法簡單說下:順著sqlite3_os_init(void)修改就行了,將所有涉及文件操作的改下,沒什么難度的,不過超過500行。接著說下適用方法,和XMLParserexpat一樣,也是基于回調(diào)的機制:首先打開或者創(chuàng)建一個數(shù)據(jù)庫:sqlite3*db;sqlite3_open(DATABASE_NAME,&db);函數(shù)成功返回0,如果數(shù)據(jù)庫不存在,則是創(chuàng)建數(shù)據(jù)庫,反之,則是打開和內(nèi)存的申請和釋放一樣,open后,一定要有成對的closesqlite3_close(db);函數(shù)成功返

8、回0,下面是常見的錯誤返回:#defineSQLITE_OK0/*Successfulresult*//*beginning-of-error-codes*/#defineSQLITE_ERROR1/*SQ

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。