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

當(dāng)前位置:首頁 > 芯聞號(hào) > 充電吧
[導(dǎo)讀]目錄(?)[+]一、初識(shí)sqlite?????????偶然的機(jī)會(huì)接觸到sqlite,不禁驚嘆sqlite的體型小巧而功能強(qiáng)大(看來軟件也不可貌相哦),Sqlite 是開源的內(nèi)存數(shù)據(jù)庫(也可以稱之為內(nèi)嵌


目錄(?)[+]

一、初識(shí)sqlite

?????????偶然的機(jī)會(huì)接觸到sqlite,不禁驚嘆sqlite的體型小巧而功能強(qiáng)大(看來軟件也不可貌相哦),Sqlite 是開源的內(nèi)存數(shù)據(jù)庫(也可以稱之為內(nèi)嵌式數(shù)據(jù)庫),大量無私的程序員為sqlite發(fā)展貢獻(xiàn)了自己的力量。Sqlite 應(yīng)用極廣,手機(jī)、mp3,機(jī)頂盒可能存在sqlite身影,Apple的Mac os,linux,或者windows在安裝第三方軟件時(shí)也可以應(yīng)用sqlite。

?????????Sqlite技術(shù)優(yōu)點(diǎn):

1.??Sqlite輕量級(jí)、跨平臺(tái)的關(guān)系型開源內(nèi)存數(shù)據(jù)庫,使用sqlite只需帶上動(dòng)態(tài)庫,就可使用sqlite全部功能(動(dòng)態(tài)庫Windows下487KB,Linux下347KB);

2.???核心引擎不依賴第三方軟件,也不需要安裝;

3.???數(shù)據(jù)庫中所有的信息(比如表、視圖、觸發(fā)器、等)都包含在一個(gè)文件內(nèi)。這個(gè)文件可以copy到其它目錄或其它機(jī)器上,也照用不誤。如果使用內(nèi)存方式,可以沒有該文件;

4.???除了主流操作系統(tǒng),SQLite還支持了很多冷門的操作系統(tǒng)。它對(duì)很多嵌入式系統(tǒng)(比如Android、Windows Mobile、Symbin、Palm、VxWorks等)也支持;

5.???SQLite的API不區(qū)分當(dāng)前操作的數(shù)據(jù)庫是在內(nèi)存還是在文件(對(duì)于存儲(chǔ)介質(zhì)是透明的);

等等;

???????? 缺點(diǎn):

1.??? 并發(fā)訪問的鎖機(jī)制
SQLite在并發(fā)(包括多進(jìn)程和多線程)讀寫方面的性能不太理想。數(shù)據(jù)庫可能會(huì)被寫操作獨(dú)占,從而導(dǎo)致其它讀寫操作阻塞或出錯(cuò);

2.???? SQL標(biāo)準(zhǔn)支持不全

如不支持外鍵約束;

??????????看來還是優(yōu)點(diǎn)多于缺點(diǎn)!呵呵!

二、sqlite體系機(jī)構(gòu)

?????????????? sqlite模塊將 查詢過程分為幾個(gè)不連續(xù)的任務(wù),在結(jié)構(gòu)棧的頂部編譯查詢語句,中不執(zhí)行,在底部處理操作系統(tǒng)的存儲(chǔ)和接口。

?

??????????? ???????????????????????????????????????? ???????圖1-2SQLite的體系結(jié)構(gòu)

(注:結(jié)構(gòu)圖轉(zhuǎn)載于《SQLite權(quán)威指南》)

三、sqlite文件數(shù)據(jù)庫、內(nèi)存數(shù)據(jù)庫建立及導(dǎo)入導(dǎo)出

?????????? sqlite官網(wǎng)(www.sqlite.org)同時(shí)提供已編譯版本和源程序。同時(shí)適用于Windows和linux。

?????????? 經(jīng)過前面sqlite熱身之后,趕緊轉(zhuǎn)入正題,干點(diǎn)正事!(*^__^*)

3.1 文件數(shù)據(jù)庫、內(nèi)存數(shù)據(jù)庫的建立 3.1.1文件數(shù)據(jù)庫的建立

Windows:

1)? 下載sqlite最新版本sqlite3.exe;

2)? dos進(jìn)入到執(zhí)行程序目錄下;

3)? 輸入 sqlite3? d:test.db(如果后面執(zhí)行路徑存在test.db 則打開數(shù)據(jù)庫;如果執(zhí)行路徑下不存在test.db則新建test.db);

Linux:

1)? 下載sqlite最新版本sqlite3;

2)? Shell進(jìn)入到可知性程序目錄下;

3) 輸入sqlite3? /home/test.db(如果后面執(zhí)行路徑存在test.db 則打開數(shù)據(jù)庫;如果執(zhí)行路徑下不存在test.db則新建test.db);

至此則打開或者新建一個(gè)文件數(shù)據(jù)庫庫;

3.1.2 內(nèi)存數(shù)據(jù)庫的建立

[cpp]?view plaincopyprint? C代碼示例:?? ?? sqlite3?*db;?? ?? rc?=?sqlite3_open(":memory:",&db);????//?內(nèi)存中創(chuàng)建一個(gè)數(shù)據(jù)庫?? ?? 3.2?文件數(shù)據(jù)庫、內(nèi)存數(shù)據(jù)庫的導(dǎo)入導(dǎo)出?? ?? C代碼示例:?? ?? ////////////////////////////////////////////////////////////////////////////////////////////?? ?? //參數(shù)說明:?? ?? //pInMemory:?指向內(nèi)存數(shù)據(jù)庫指針?? ?? //zFilename:?指向文件數(shù)據(jù)庫目錄的字符串指針?? ?? //isSave??0:?從文件數(shù)據(jù)庫載入到內(nèi)存數(shù)據(jù)庫?1:從內(nèi)存數(shù)據(jù)庫備份到文件數(shù)據(jù)庫?? ?? ////////////////////////////////////////////////////////////////////////////////////////////?? ?? int?loadOrSaveDb(sqlite3?*pInMemeory,?const?char?*zFilename,?int?isSave)?? ?? {?? ?? ?????????int?rc;?? ?? ?????????sqlite3?*pFile;?? ?? ?????????sqlite3_backup?*pBackup;?? ?? ?????????sqlite3?*pTo;?? ?? ?????????sqlite3?*pFrom;?? ?? ?????????rc?=?sqlite3_open(zFilename,?&pFile);?? ?? ?????????if(rc?==?SQLITE_OK)?? ?? ?????????{?? ?? ???????????????????pFrom?=?(isSave?pInMemeory:pFile);?? ???????????????????pTo?=?(isSave?pFile:pInMemeory);?? ?? ???????????????????pBackup?=?sqlite3_backup_init(pTo,"main",pFrom,"main");?? ?? ???????????????????if(pBackup)?? ???????????????????{?? ????????????????????????????(void)sqlite3_backup_step(pBackup,-1);?? ????????????????????????????(void)sqlite3_backup_finish(pBackup);?? ???????????????????}?? ?? ???????????????????rc?=?sqlite3_errcode(pTo);?? ?? ?????????}?? ?? ?????????(void)sqlite3_close(pFile);?? ?? ?????????return?rc;?? }??


?調(diào)用實(shí)例:

[cpp]?view plaincopyprint? int?ret?=?0;?? ?? char?*filename?=?“d:\test.db”;?? sqlite3?*memoryDb;?? ?? ret?=?sqlite3_open(“memory:”,?&memoryDb);?? ret?=?loadOrSaveDb(memoryDb,?filename,?0)?//文件數(shù)據(jù)庫導(dǎo)入到內(nèi)存數(shù)據(jù)庫??
3.3 文件數(shù)據(jù)庫命令格式的導(dǎo)入導(dǎo)出

???????? 3.3.1 文件數(shù)據(jù)庫命令格式數(shù)據(jù)導(dǎo)出、備份

方法一:(sqlite數(shù)據(jù)庫內(nèi)部)

Sqlite>.output d:test.sql

Sqlite>.dump

Sqlite>.output stdout

方法二:(dos命令行)

sqlite3 525.db .dump>haha.sql

3.3.2文件數(shù)據(jù)庫命令格式數(shù)據(jù)導(dǎo)入

sqlite>.read? file.sql

???????????? 今天暫且到這了,to be continue……

本站聲明: 本文章由作者或相關(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)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉