sqlite3_open 成功了,緊接著寫下面的代碼:
複製內容到剪貼簿
代碼:
int i;
//添加、使用密碼
i = sqlite3_key( db, "dcg", 3 );
//修改密碼
i = sqlite3_rekey( db, "dcg", 0 );
用 sqlite3_key 函數來提交密碼。, K% Y, ^9 x* W& F1 l/ }% V
: g, q! C( Z+ h( k5 }# j& I第1個參數是 sqlite3 * 類型變數,代表著用 sqlite3_open 開啟的資料庫(或建立資料庫)。
8 k+ p& @& R1 _( j# v+ p
3 c9 [* R' n/ N, f第2個參數是密鑰。5 v0 Y. O& V& T3 y3 f; O; E8 R
- A9 V. h5 @/ w第3個參數是密鑰長度。$ t0 h1 S( v' V% y7 n, ~/ h# ~( E
( j/ [- n4 y' u2 G! ]8 u% j4 d/ {用 sqlite3_rekey 來修改密碼。參數含義同 sqlite3_key。
; {/ O; I. s; ~# p0 A4 J
( ]0 A& W/ R% n6 W 0 ?/ i* d( Y- t9 b/ Z+ \. N
# A D1 j2 s4 U4 P
實際上,你可以在sqlite3_open函數之後,到 sqlite3_close 函數之前任意位置調用 sqlite3_key 來設定密碼。
4 `6 |; V: P9 s' S
3 H c% J: s! ?0 S( K H- ]但是如果你沒有設定密碼,而資料庫之前是有密碼的,那麼你做任何操作都會得到一個傳回值:SQLITE_NOTADB,並且得到錯誤提示:“file is encrypted or is not a database”。
# i ~# C% M9 @2 w( O" A, M' ~2 u$ H/ F% ]
只有當你用 sqlite3_key 設定了正確的密碼,資料庫才會正常工作。
) L' {" p' a* h/ d% ^* F! f$ g
* {" m) {& ]; y' o如果你要修改密碼,前提是你必須先 sqlite3_open 開啟資料庫成功,然後 sqlite3_key 設定密鑰成功,之後才能用 sqlite3_rekey 來修改密碼。
# H, u4 C) J- T% t
: d( l3 I. [. Y如果資料庫有密碼,但你沒有用 sqlite3_key 設定密碼,那麼當你嘗試用 sqlite3_rekey 來修改密碼時會得到 SQLITE_NOTADB 傳回值。
. n: V' ^, J% }4 M) L) m4 I
6 L' E1 i7 K* p. [9 n. J如果你需要清空密碼,可以使用:
複製內容到剪貼簿
代碼:
//修改密碼
i = sqlite3_rekey( db, NULL, 0 );
來完成密碼清空功能。