当前位置:Gxlcms > 数据库问题 > wxsqlite3的加密模块单独编译

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的加密模块单独编译

标签:

人气教程排行