亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQLite > 正文

SQLITE3 使用總結(1)

2024-09-07 00:09:54
字體:
來源:轉載
供稿:網友

前序:... 1
一、 版本... 1
二、 基本編譯... 2
三、 SQLITE操作入門... 2
(1) 基本流程... 2
(2) SQL語句操作... 4
(3) 操作二進制... 8
(4) 事務處理... 10
四、 給數據庫加密... 10
五、 后記... 25

前序:
Sqlite3 的確很好用。小巧、速度快。但是因為非微軟的產品,幫助文檔總覺得不夠。這些天再次研究它,又有一些收獲,這里把我對 sqlite3 的研究列出來,以備忘記。

這里要注明,我是一個跨平臺專注者,并不喜歡只用 windows 平臺。我以前的工作就是為 unix 平臺寫代碼。下面我所寫的東西,雖然沒有驗證,但是我已盡量不使用任何 windows 的東西,只使用標準 C 或標準C++。但是,我沒有嘗試過在別的系統、別的編譯器下編譯,因此下面的敘述如果不正確,則留待以后修改。

下面我的代碼仍然用 VC 編寫,因為我覺得VC是一個很不錯的IDE,可以加快代碼編寫速度(例如配合 Vassist )。下面我所說的編譯環境,是VC2003。如果讀者覺得自己習慣于 unix 下用 vi 編寫代碼速度較快,可以不用管我的說明,只需要符合自己習慣即可,因為我用的是標準 C 或 C++ 。不會給任何人帶來不便。

一、 版本
從 www.sqlite.org 網站可下載到最新的 sqlite 代碼和編譯版本。我寫此文章時,最新代碼是 3.3.17 版本。

很久沒有去下載 sqlite 新代碼,因此也不知道 sqlite 變化這么大。以前很多文件,現在全部合并成一個 sqlite3.c 文件。如果單獨用此文件,是挺好的,省去拷貝一堆文件還擔心有沒有遺漏。但是也帶來一個問題:此文件太大,快接近7萬行代碼,VC開它整個機器都慢下來了。如果不需要改它代碼,也就不需要打開 sqlite3.c 文件,機器不會慢。但是,下面我要寫通過修改 sqlite 代碼完成加密功能,那時候就比較痛苦了。如果個人水平較高,建議用些簡單的編輯器來編輯,例如 UltraEdit 或 Notepad 。速度會快很多。

二、 基本編譯
這個不想多說了,在 VC 里新建 dos 控制臺空白工程,把 sqlite3.c 和 sqlite3.h 添加到工程,再新建一個 main.cpp 文件。在里面寫:

extern "C"
{
#include "./sqlite3.h"
};
int main( int , char** )
{
return 0;
}

為什么要 extern “C” ?如果問這個問題,我不想說太多,這是C++的基礎。要在 C++ 里使用一段 C 的代碼,必須要用 extern “C” 括起來。C++跟 C雖然語法上有重疊,但是它們是兩個不同的東西,內存里的布局是完全不同的,在C++編譯器里不用extern “C”括起C代碼,會導致編譯器不知道該如何為 C 代碼描述內存布局。

可能在 sqlite3.c 里人家已經把整段代碼都 extern “C” 括起來了,但是你遇到一個 .c 文件就自覺的再括一次,也沒什么不好。

基本工程就這樣建立起來了。編譯,可以通過。但是有一堆的 warning。可以不管它。

三、 SQLITE操作入門
sqlite提供的是一些C函數接口,你可以用這些函數操作數據庫。通過使用這些接口,傳遞一些標準 sql 語句(以 char * 類型)給 sqlite 函數,sqlite 就會為你操作數據庫。

sqlite 跟MS的access一樣是文件型數據庫,就是說,一個數據庫就是一個文件,此數據庫里可以建立很多的表,可以建立索引、觸發器等等,但是,它實際上得到的就是一個文件。備份這個文件就備份了整個數據庫。

sqlite 不需要任何數據庫引擎,這意味著如果你需要 sqlite 來保存一些用戶數據,甚至都不需要安裝數據庫(如果你做個小軟件還要求人家必須裝了sqlserver 才能運行,那也太黑心了)。

下面開始介紹數據庫基本操作。

(1) 基本流程
i.1 關鍵數據結構

sqlite 里最常用到的是 sqlite3 * 類型。從數據庫打開開始,sqlite就要為這個類型準備好內存,直到數據庫關閉,整個過程都需要用到這個類型。當數據庫打開時開始,這個類型的變量就代表了你要操作的數據庫。下面再詳細介紹。

i.2 打開數據庫

int sqlite3_open( 文件名, sqlite3 ** );

用這個函數開始數據庫操作。

需要傳入兩個參數,一是數據庫文件名,比如:c://DongChunGuang_Database.db。

文件名不需要一定存在,如果此文件不存在,sqlite 會自動建立它。如果它存在,就嘗試把它當數據庫文件來打開。

sqlite3 ** 參數即前面提到的關鍵數據結構。這個結構底層細節如何,你不要關它。

函數返回值表示操作是否正確,如果是 SQLITE_OK 則表示操作正常。相關的返回值sqlite定義了一些宏。具體這些宏的含義可以參考 sqlite3.h 文件。里面有詳細定義(順便說一下,sqlite3 的代碼注釋率自稱是非常高的,實際上也的確很高。只要你會看英文,sqlite 可以讓你學到不少東西)。

下面介紹關閉數據庫后,再給一段參考代碼。

i.3 關閉數據庫

int sqlite3_close(sqlite3 *);

前面如果用 sqlite3_open 開啟了一個數據庫,結尾時不要忘了用這個函數關閉數據庫。

下面給段簡單的代碼:

extern "C"
{
#include "./sqlite3.h"
};
int main( int , char** )
{
sqlite3 * db = NULL; //聲明sqlite關鍵結構指針
int result;
//打開數據庫
//需要傳入 db 這個指針的指針,因為 sqlite3_open 函數要為這個指針分配內存,還要讓db指針指向這個內存區
result = sqlite3_open( “c://Dcg_database.db”, &db );
if( result != SQLITE_OK )
{
//數據庫打開失敗
return -1;
}
//數據庫操作代碼
//…
//數據庫打開成功
//關閉數據庫
sqlite3_close( db );
return 0;
}

這就是一次數據庫操作過程。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜久久久影院| 国产高清视频一区三区| 日本精品视频网站| 韩国国内大量揄拍精品视频| 亚洲久久久久久久久久| 色伦专区97中文字幕| 亚洲色图35p| 国产精品三级久久久久久电影| 人人爽久久涩噜噜噜网站| 亚洲人午夜色婷婷| 国产有码在线一区二区视频| 91国自产精品中文字幕亚洲| 国产欧美日韩专区发布| 日韩精品免费视频| 国产精品久久久久久超碰| 91深夜福利视频| 国产精品久久久久久久久久新婚| 97超级碰在线看视频免费在线看| 色婷婷亚洲mv天堂mv在影片| 亚洲一级一级97网| 两个人的视频www国产精品| 欧美视频13p| 成人羞羞国产免费| 国产精品福利久久久| 日韩精品在线观看一区| 国产视频一区在线| 日韩在线免费av| 亚洲aaa激情| 26uuu另类亚洲欧美日本老年| 亚洲精品av在线播放| 亚洲图片在区色| 欧美性猛交xxxx乱大交极品| 久久国产精品久久国产精品| 国产成人精品最新| 精品女同一区二区三区在线播放| 日韩精品免费在线| 亚洲性生活视频在线观看| 亚洲精品日韩在线| 亚洲精品91美女久久久久久久| 亚洲午夜小视频| 久久久免费高清电视剧观看| 欧美国产日韩一区二区三区| 欧美亚洲日本黄色| 欧美黑人xxxx| 色诱女教师一区二区三区| 日韩视频免费在线| 亚洲欧美国产精品久久久久久久| 日韩精品视频免费在线观看| 欧美肥臀大乳一区二区免费视频| 欧美激情2020午夜免费观看| 国产免费一区二区三区在线观看| 国产一区二区免费| 国产剧情久久久久久| 国产精品久久久久久婷婷天堂| 欧美成人免费全部| 久久99精品久久久久久青青91| 欧美专区在线视频| 久久久视频在线| 欧美午夜精品久久久久久人妖| 亚洲精品国产电影| 91九色在线视频| 日韩视频精品在线| 国产精品91在线| 91精品视频在线| 亚洲大胆人体av| 欧美日韩xxx| 动漫精品一区二区| 欧美激情视频播放| 成人午夜黄色影院| 性欧美在线看片a免费观看| 亚洲午夜未删减在线观看| 国内精久久久久久久久久人| 久久6精品影院| 日韩免费观看高清| 日韩精品福利网站| 中文字幕精品www乱入免费视频| 国产精品成人国产乱一区| 92看片淫黄大片欧美看国产片| 成人国产精品色哟哟| 欧美午夜精品久久久久久人妖| 亚洲最大在线视频| 日韩欧美极品在线观看| 日本高清视频一区| 久久国产精品偷| 中文字幕免费国产精品| 日韩免费av在线| 亚洲欧美日韩天堂| 性色av一区二区三区红粉影视| 国产亚洲人成网站在线观看| 亚洲人线精品午夜| 日韩成人网免费视频| 国产精品吊钟奶在线| 精品久久久久久久久久久久久| 国产成人精品优优av| 91精品久久久久| 4438全国成人免费| 国产精品91久久久久久| 亚洲理论片在线观看| 亚洲香蕉伊综合在人在线视看| 亚洲精品自拍偷拍| 操人视频在线观看欧美| 亚洲第一级黄色片| 精品欧美aⅴ在线网站| 97**国产露脸精品国产| 欧美成人精品一区| 国产噜噜噜噜噜久久久久久久久| 国产精品久在线观看| 麻豆国产va免费精品高清在线| 欧美日本国产在线| 欧美理论电影网| 动漫精品一区二区| 青青青国产精品一区二区| 亚洲乱码国产乱码精品精| 国产91ⅴ在线精品免费观看| 成人欧美一区二区三区在线| 日韩欧美精品网站| 久久免费少妇高潮久久精品99| 国产噜噜噜噜噜久久久久久久久| 亚洲欧美中文字幕| 亚洲电影免费观看高清完整版在线| 欧美日韩国产中文精品字幕自在自线| 黄色91在线观看| 日韩中文字幕视频| 久热精品视频在线| 51精品国产黑色丝袜高跟鞋| 尤物九九久久国产精品的特点| 欧美色道久久88综合亚洲精品| 在线看片第一页欧美| 91成人福利在线| 午夜精品福利视频| 日韩av在线网| 亚洲第一精品电影| 亚洲午夜久久久久久久| 国产91色在线|免| 亚洲精品91美女久久久久久久| 97视频在线观看亚洲| 亚洲成色777777女色窝| 国产福利视频一区二区| 亚洲欧美另类人妖| 亚洲精品国精品久久99热| 精品久久久久久亚洲国产300| 国产91精品久久久久久| 亚洲二区在线播放视频| 成人在线激情视频| 国产精品第二页| 91在线中文字幕| 欧美大人香蕉在线| 伊人久久久久久久久久久| 92版电视剧仙鹤神针在线观看| 中日韩美女免费视频网址在线观看| 日韩69视频在线观看| 久久精品国产91精品亚洲| 成人中文字幕在线观看| 91精品国产91久久久久久最新| 国产精品成人播放| 欧美日韩国产综合视频在线观看中文| 国产精品男人爽免费视频1| 最近免费中文字幕视频2019| 亚洲欧美日韩网| 伊人男人综合视频网| 欧美视频在线观看免费网址| 最新中文字幕亚洲| 久久五月天综合| 欧美精品999|