Jquery中文網 www.2030036.live
Jquery中文網 >  數據庫  >  sqlite  >  正文 SQLite3數據庫操作學習筆記

SQLite3數據庫操作學習筆記

發布時間:2014-07-20   編輯:www.2030036.live
SQLite3數據庫操作學習筆記

SQLite數據庫操作學習筆記,通過使用SQLITE3進行創建數據庫,創建表,插入記錄,查詢記錄,更新記錄,關閉數據庫等操作來實現將相應的數據存入數據庫中。

1.打開數據庫,創建表
1.1  sqlite * db; 定義一個sqlite * 的變量
 

復制代碼 代碼如下:
sqlite3_open(“./link.db”,&db);

在當前目錄下打開一個名為link.db的數據庫,若是沒有則在當前目錄下創建一個名為link.db的數據庫。

1.2 sql = "create table weblink(id integer primary key,domain text,page text,fromdomain text,status integer);"

在已打開的數據庫中創建一個名weblink的表。表的屬性如下:
id integer primary key :ID號(表中黙認包含的)
domain text : 域名
page text :子網頁
fromdomain text :源域名
status integer:狀態標志
域名與子網頁由從源域名的網頁中獲取的網址折分而來。
eg: www.sina.com/news.html.
域名為:www.sina.com
子網頁:news.html

1.3  sqlite3_exec(db,sql,NULL,NULL,NULL);

執行一條 sql 語句的函數。
函數原型:int sqlite3_exec(sqlite3*, const char *sql, sqlite3_callback, void *, char **errmsg )
第1個參數是前面open函數得到的指針。說了是關鍵數據結構。

第2個參數const char *sql 是一條 sql 語句,以結尾。

第3個參數sqlite3_callback 是回調,當這條語句執行之后,sqlite3會去調用你提供的這個函數。(什么是回調函數,自己找別的資料學習)

第4個參數void *     是你所提供的指針,你可以傳遞任何一個指針參數到這里,這個參數最終會傳到回調函數里面,如果不需要傳遞指針給回調函數,可以填NULL。等下我們再看回調函數的寫法,以及這個參數的使用。

第5個參數char ** errmsg 是錯誤信息。注意是指針的指針。sqlite3里面有很多固定的錯誤信息。執行 sqlite3_exec 之后,執行失敗時可以查閱這個指針(直接 printf(“%sn”,errmsg))得到一串字符串信息,這串信息告訴你錯在什么地方。sqlite3_exec函數通過修改你傳入的指針的指針,把你提供的指針指向錯誤提示信息,這樣sqlite3_exec函數外面就可以通過這個 char*得到具體錯誤提示。

說明:通常,sqlite3_callback 和它后面的 void * 這兩個位置都可以填 NULL。填NULL表示你不需要回調。比如你做 insert 操作,做 delete 操作,就沒有必要使用回調。而當你做 select 時,就要使用回調,因為 sqlite3 把數據查出來,得通過回調告訴你查出了什么數據。

1.3.1sqlite3_exec 的回調函數

int record_callback ( void * para, int n_column, char ** column_value, char ** column_name )

a).para是你在 sqlite3_exec 里傳入的 void * 參數

通過para參數,你可以傳入一些特殊的指針(比如類指針、結構指針),然后在這里面強制轉換成對應的類型(這里面是void*類型,必須強制轉換成你的類型才可用)。
然后操作這些數據。

b).n_column是這一條記錄有多少個字段 (即這條記錄有多少列或者說這條記錄有幾個字段名)

char ** column_value 是個關鍵值,查出來的數據都保存在這里,它實際上是個1維數組(不要以為是2維數組),每一個元素都是一個 char * 值,是一個字段內容(用字符串來表示,以結尾)

c).char ** column_name 跟 column_value是對應的,表示這個字段的字段名稱

2.插入記錄
 

復制代碼 代碼如下:
Sql=sqlite3_mprintf("insert into weblink(domain,page,fromdomain,status)" " values(%Q,%Q,%Q,%d)", domain,page,fromdomain,status);  
 
Insert into :插入命令
Weblink (domain,page,fromdomain,status) ::要操作的表名與要插入的數據對應的字段名稱
values(%Q,%Q,%Q,%d) :要插入的數據對應的格式
domain,page,fromdomain,status :通過函數傳遞進來的型參名 (要插入的數據)

3.查詢記錄
 

復制代碼 代碼如下:

sql = sqlite3_mprintf("select * from weblink where page = %Q and domain=%Q",page,domain);

select * from weblink 查詢命令 (查詢整個表的所有記錄)
select * from weblink where page = %Q and domain=%Q :查詢命令(以子網頁名和域名為關鍵字)
page,domain :通過函數傳遞進來的型參名(要查詢的數據)

4.更新記錄
 

復制代碼 代碼如下:
sqlite3_mprintf("update weblink set status=%d where id=%d", status,id);  
 
update weblink set status=%d where id=%d :更新命令(以狀態值和ID為關鍵)
status,id :通過函數傳遞進來的型參名(要更新的數據)

5.獲取記錄
 

復制代碼 代碼如下:

sql = sqlite3_mprintf("select * from weblink where status=0 order by id asc limit 0,1 ");

select * from weblink where status=0 order by idasc limit 0,1 :查詢命令 (以升序的方式查詢status = 0 的記錄)
order by idasc limit 0,1 以升序的方式

6.關閉數據庫
 

復制代碼 代碼如下:
int sqlite3_close(db)

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

7 . SQLITE3 的常用操作命令
a). sqlite3 link.db  打開數據庫
b). .tables 查看表名
c). .schema 查看表的結構
d). select * from (表名) ; 查看表的記錄
e). select count(*)  from (表名) ; 查看表的記錄總數據
f). .help 查看幫助
g). .q 退出數據庫
 

您可能感興趣的文章:
SQLite3數據庫操作學習筆記
SQLite 創建數據庫
SQLite – PHP
SQLite – Python
SQLite – C/C++
SQL 總結
SQLite數據庫的使用
我的redis學習筆記
SQLite函數使用教程(1)
Lua 數據庫訪問

[關閉]
888棋牌金花app 黑龙江11选5直选遗漏 pk10走势图杀码技巧 江西多乐彩技巧 每股转增1股什么意思 吉林快三 开奖结果 天津时时彩开奖号码 天津11选五一定牛遗漏 讲股票的直播平台 天津十一选五开奖走势图 淘宝理财平台