資料庫 SQLITE3 使用總結3

2022-03-21 13:12:16 字數 1943 閱讀 6139

3          不使用**查詢資料庫

" z6 b. l" a' i8 m, w* d

/ `- ^# t6 ?, f: h* m2 ~# ~

上面介紹的 sqlite3_exec 是使用**來執行 select 操作。還有乙個方法可以直接查詢而不需要**。但是,我個人感覺還是**好,因為**可以更加整齊,只不過用**很麻煩,你得宣告乙個函式,如果這個函式 是類成員函式,你還不得不把它宣告成 static 的(要問為什麼?這又是c++基礎了。c++成員函式實際上隱藏了乙個引數:this,c++呼叫類的成員函式的時候,隱含把類指標當成函式的第乙個引數 傳遞進去。結果,這造成跟前面說的 sqlite **函式的引數不相符。只有當把成員函式宣告成 static 時,它才沒有多餘的隱含的this引數)。9 s) ~, q% o, c

& m1 o7 u5 v8 e1 e- q

雖然**顯得**整齊,但有時候你還是想要非**的 select 查詢。這可以通過 sqlite3_get_table 函式做到。

複製內容到剪貼簿

**:int sqlite3_get_table(sqlite3*, const char *sql, char ***resultp, int *nrow, int *ncolumn, char **errmsg );

第1個引數不再多說,看前面的例子。?. x& [9 x, t% r5 o, j

* v* r) ?: y6 l& r4 h第2個引數是 sql 語句,跟 sqlite3_exec 裡的 sql 是一樣的。是乙個很普通的以\0結尾的char *字串。) w& d% i   m$ ^0 n- s$ d

# r. z5 \# e' @/ u9 i

第3個引數是查詢結果,它依然一維陣列(不要以為是二維陣列,更不要以為是三維陣列)。它記憶體布局是:第一行是欄位名稱,後面是緊接著是每個欄位的值。下面用例子來說事。8 q6 d   a1 f1 b# u) g; z9 i

1 + o. d. ]6 o8 l

第4個引數是查詢出多少條記錄(即查出多少行)。

( t1 o% r/ r( s' h/ @4 l; n3 g

; ?+ p- s; e+ z/ `1 |

第5個引數是多少個字段(多少列)。! x3 m7 m& |$ _( m

/ o1 `% c' a! s9 b第6個引數是錯誤資訊,跟前面一樣,這裡不多說了。

. `( w+ i0 l3 |/ v

! ^6 l7

//資料庫操作**

//假設前面已經建立了 mytable_1 表

//開始查詢,傳入的 dbresult 已經是 char **,這裡又加了乙個 & 取位址符,傳遞進去的就成了 char ***

result = sqlite3_get_table( db, 「select * from mytable_1」, &dbresult, &nrow, &ncolumn, &errmsg );

if( sqlite_ok == result )

printf( 「-------\n」 );}}

//到這裡,不論資料庫查詢是否成功,都釋放 char** 查詢結果,使用 sqlite 提供的功能來釋放

sqlite3_free_table( dbresult );

//關閉資料庫

sqlite3_close( db );

return 0;

}到這個例子為止,sqlite3 的常用用法都介紹完了。

/ i9 j" l; m; |8 m, d

/ u5 x/ z7 b/ s6 r8 k

用以上的方法,再配上 sql 語句,完全可以應付絕大多數資料庫需求。0 f" l- j- g   z$ e

( x+ i. ^0 s! v9 d; v' r' s! {

但有一種情況,用上面方法是無法實現的:需要insert、select 二進位制。當需要處理二進位制資料時,上面的方法就沒辦法做到。下面這一節說明如何插入二進位制資料

Sqlite3 資料庫使用

iphone本身是支援 sqlite3 資料庫的,在專案中匯入libsqlite3.dylib。並建立資料庫,在終端,建立資料庫的方式 mkdir sql 建立sql資料夾 cd sql 進入sql目錄下 sqlite3 student.sql 建立名為 student.sql的資料庫 建立表 插入...

Sqlite3資料庫使用

sqlite特點 1 輕量級 2 跨平台,可以在手機上使用 3 功能夠用但是不多 4 python環境內建sqlite import sqlite3 connect 連線 database 資料庫,簡稱db 如果資料庫不存在,會自動建立再連線 如果資料庫存在則直接連線 和檔案操作的open比較像 c...

資料庫 SQLITE3 使用總結5

sqlite 是支援事務處理的。如果你知道你要同步刪除很多資料,不仿把它們做成乙個統一的事務。p4 t j s k r 1 n4 k f u u t通常一次 sqlite3 exec 就是一次事務,如果你要刪除1萬條資料,sqlite就做了1萬次 開始新事務 刪除一條資料 提交事務 開始新事務 的過...