wxsqlite3的加密模块单独编译
时间:2021-07-01 10:21:17
帮助过:10人阅读
#include
"include\sqlite3.h"
2 #include
"include\sqlite3userauth.h"
3
4 /* sqlite3 加密示例 */
5 /* 首先打开数据库 sqlite3_open,然后在操作数据库之前执行 sqlite3_key 后就可进行数据库操作,否则会返回错误。
6 sqlite3_key是输入密钥,如果数据库已加密必须先执行此函数并输入正确密钥才能进行操作,
7 如果数据库没有加密,执行此函数后进行数据库操作反而会出现“此数据库已加密或不是一个数据库文件”的错误。
8 sqlite3_rekey是变更密钥或给没有加密的数据库添加密钥或清空密钥,
9 变更密钥或清空密钥前必须先正确执行 sqlite3_key。
10 在正确执行 sqlite3_rekey 后在 sqlite3_close 关闭数据库之前可正常操作数据库,不需要再执行 sqlite3_key。*/
11
12 sqlite3_config(SQLITE_CONFIG_SINGLETHREAD);
13 sqlite3* db =
nullptr;
14 if(SQLITE_OK == sqlite3_open_v2(
"../test.db3", &db, SQLITE_OPEN_EXCLUSIVE |
SQLITE_OPEN_READWRITE, nullptr))
15 {
16 /* encrypt
17 if(SQLITE_OK != sqlite3_rekey(psqlite3, "qazwsx!123", 10))
18 {
19 std::string serr = "sqlite encrypt error:";
20 serr += sqlite3_errmsg(psqlite3);
21 }*/
22
23 /* decrypt */
24 sqlite3_key(db,
"qazwsx!123",
10);
25
26 /* query */
27 std::
string sqlstr(
"select comment from country where codevalue=1");
28 sqlite3_stmt*
pstmt;
29 if(SQLITE_OK == sqlite3_prepare_v2(db, sqlstr.c_str(), sqlstr.length(), &
pstmt, nullptr))
30 {
31 if (SQLITE_ROW ==
sqlite3_step(pstmt))
32 {
33 std::
string stext = (
char* )sqlite3_column_text(pstmt,
0);
34 }
35 else
36 {
37 std::
string serr =
"sqlite step error:";
38 serr +=
sqlite3_errmsg(db);
39 }
40 }
41 else
42 {
43 std::
string serr =
"sqlite prepare error:";
44 serr +=
sqlite3_errmsg(db);
45 }
46 sqlite3_finalize(pstmt);
47 }
48 else
49 {
50 std::
string serr =
"sqlite open error:";
51 serr +=
sqlite3_errmsg(db);
52 }
53 sqlite3_close(db);
wxsqlite3的加密模块单独编译
标签: