采用上一节的方法为SQLite添加了加密解密功能后,使用方法如下:
1、在调用sqlite3_open()函数打开数据库后,要调用sqlite3_key()函数为数据库设置密码;
2、如果数据库之前有密码,则调用sqlite3_key()函数设置正确密码才能正常工作;
3、如果一个数据库之前没有密码,且已经有数据,则不能再为其设置密码;
4、如果要修改密码,则需要在第一步操作后,调用sqlite3_rekey()函数设置新的密码;
5、设置了密码的SQLite数据库,无法使用第三方工具打开;
具体使用的示例代码如下:
#include<stdio.h>
<stdlib.h>
"sqlite3.h"
#defineSQLITE3_STATIC
externintsqlite3_key(sqlite3*db,constvoid*pKey,85)">intnKey);
staticint_callback_exec(void* notused,85)">intargc,85)">char** argv,85)">char** aszColName)
{
inti;
for( i=0; i<argc; i++ )
{
printf("%s = %srn",aszColName[i],argv[i] == 0 ?"NUL": argv[i] );
}
return0;
}
intmain(char* argv[])
{
char* sSQL;
char* pErrMsg = 0;
intret = 0;
sqlite3* db = 0;
//创建数据库
ret = sqlite3_open("d:encrypt.db",&db);
添加密码
ret = sqlite3_key( db,"dcg",3 );
在内存数据库中创建表
sSQL ="create table class(namevarchar(20),student);";
sqlite3_exec( db,sSQL,_callback_exec,&pErrMsg );
插入数据
sSQL ="insert into class values('mem_52911','zhaoyun');";
sqlite3_exec( db,95)">取得数据并显示
sSQL ="select * from class;";
sqlite3_exec( db,95)">关闭数据库
sqlite3_close(db);
db = 0;
return0;
}