① 更改數(shù)據(jù)庫密碼:首先你需要使用當前的密碼正確的打開數(shù)據(jù)庫,之后你可以調(diào)用sqlite3_rekey(db,"112233",6) 來更改數(shù)據(jù)庫密碼。
② 刪除密碼:也就是把數(shù)據(jù)庫恢復(fù)到明文狀態(tài)。這時你仍然只需要調(diào)用sqlite3_rekey函數(shù),并且把該函數(shù)的第二個參數(shù)置為NULL或者"",或者把第三個參數(shù)設(shè)為0。
加密后數(shù)據(jù)庫文件顯示為亂碼:

為此我建立了一個簡單的示例:
sqlite3 *db;
sqlite3_stmt *stat;
char *zErrMsg = 0;
char temp[256], FileRoot[256];
char buffer2[1024]="0";
sprintf(temp, _T("%s"), _T("utf.db"));
CCodingConv::GB2312_2_UTF8(FileRoot, 256, temp, 0);
sqlite3_open(FileRoot, &db);
if(db == NULL)
{
return -1;
}
sqlite3_key(db,"1q2w3e4r",8);
sqlite3_exec(db, "CREATE TABLE list (fliename varchar(128) UNIQUE, fzip text);", 0, 0, &zErrMsg);
sqlite3_prepare(db, "insert into list values ('中文GB2312編碼',?);", -1, &stat, 0);
strcpy(temp, "測試數(shù)據(jù)UTF-8的支持情況");
int len = (int)strlen(temp);
sqlite3_bind_text(stat, 1, temp, len, NULL);
sqlite3_step(stat);
sqlite3_prepare(db, "select * from list;", -1, &stat, 0);
sqlite3_step(stat);
const unsigned char * test = sqlite3_column_text(stat, 1);
int size = sqlite3_column_bytes(stat, 1);
printf("%s", test);
sqlite3_finalize(stat);
//sqlite3_rekey(db,"",0);
sqlite3_close(db);
具體的源代碼如下:
SQLite3.3.7 加密版源代碼(VC2003)
SQLite3.3.7 加密版源代碼(VC2005)
例子1,例子2