wxsqlite使用

wxsqlite3的加密模块单独编译

其实就是个编译过程,so easy,只是网上的方法各种,而且不是最新的,所以自己琢磨了。

1、从sqlite网站下载sqlite-amalgamation-xxx和sqlite-dll-win32-x86-xxx

2、从github下载wxsqlite3-xxx

3、使用vs创建win32 dll空项目

4、拷贝wxsqlite3-3.3.0\sqlite3\secure\src\下的所有h、c文件、def文件

5、添加sqlite3secure.c、sqlite3.h到工程

6、设置预处理定义: SQLITE_HAS_CODEC CODEC_TYPE=CODEC_TYPE_AES128 SQLITE_CORE SQLITE_SECURE_DELETE SQLITE_ENABLE_COLUMN_METADATA SQLITE_ENABLE_RTREE

编译静态库需要多添加:USE_DYNAMIC_SQLITE3_LOAD=0

7、编译动态库:在配置属性-->链接器-->输入-->模块定义文件 加入sqlite3.def

8、使用引入sqlite3.h和sqlite3userauth.h

如果需要使用最新的sqlite3,请用sqlite-amalgamation-xxx中的h和c文件替换工程对应的文件。

9、 使用注意:

首先打开数据库 sqlite3_open,然后在操作数据库之前执行 sqlite3_key 后就可进行数据库操作,否则会返回错误。
 sqlite3_key是输入密钥,如果数据库已加密必须先执行此函数并输入正确密钥才能进行操作,
 如果数据库没有加密,执行此函数后进行数据库操作反而会出现“此数据库已加密或不是一个数据库文件”的错误。
 sqlite3_rekey是变更密钥或给没有加密的数据库添加密钥或清空密钥,
 变更密钥或清空密钥前必须先正确执行 sqlite3_key。
 在正确执行 sqlite3_rekey 后在 sqlite3_close 关闭数据库之前可正常操作数据库,不需要再执行 sqlite3_key。

ps:sqlite3的新版可能存在不兼容wxsqlite3的情况,建议使用wxsqlite3自带版本,而且它的更新也很快的。

示例代码如下

复制代码

 1  1、对未加密的数据库加密:
 2 #include "include\sqlite3.h"
 3 #include "include\sqlite3userauth.h"
 4 
 5     sqlite3_config(SQLITE_CONFIG_SINGLETHREAD);
 6     sqlite3* db = nullptr;
 7     char *errorMsg;
 8     if(SQLITE_OK == sqlite3_open_v2("../test.db3", &db, SQLITE_OPEN_EXCLUSIVE | SQLITE_OPEN_READWRITE, nullptr))
 9     {
10         /* encrypt */
11         if(SQLITE_OK != sqlite3_rekey(db, "qazwsx!123", 10))
12         {
13             std::string serr = "sqlite encrypt error:";
14             serr += sqlite3_errmsg(db);
15         }
16     }
17     else
18     {
19         std::string serr = "sqlite open error:";
20         serr += sqlite3_errmsg(db);
21     }
22     sqlite3_close(db);

复制代码

复制代码

 1 2、对加密后的数据库清除密码:
 2 #include "include\sqlite3.h"
 3 #include "include\sqlite3userauth.h"
 4 
 5     sqlite3_config(SQLITE_CONFIG_SINGLETHREAD);
 6     sqlite3* db = nullptr;
 7     char *errorMsg;
 8     if(SQLITE_OK == sqlite3_open_v2("../test.db3", &db, SQLITE_OPEN_EXCLUSIVE | SQLITE_OPEN_READWRITE, nullptr))
 9     {    
10         /* decrypt */
11         sqlite3_key(db, "qazwsx!123", 10);
12         
13         /* clear password */
14         sqlite3_rekey(db, nullptr, 0);
15     }
16     else
17     {
18         std::string serr = "sqlite open error:";
19         serr += sqlite3_errmsg(db);
20     }
21     sqlite3_close(db);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Python是一种广泛应用于各种领域的编程语言,而wxSQLite是一个用于在Python中操作SQLite数据库的开源库。SQLite是一种轻型的嵌入式数据库,它占用资源少、易于使用,因此在许多小型应用程序中被广泛使用使用wxSQLite库,我们可以在Python程序中轻松地创建、连接、查询和操作SQLite数据库。该库提供了许多方便的方法和功能,使我们能够高效地进行数据库操作。 首先,我们需要安装wxSQLite库。可以通过pip命令在Python中安装wxSQLite: pip install wxsqlite 安装完成后,我们可以在程序中引入wxwxsqlite模块。然后,我们可以使用wxsqlite模块中的函数创建数据库连接: import wx import wxsqlite # 创建数据库连接 conn = wxsqlite.connect("database.db") 接下来,我们可以执行SQL语句对数据库进行操作: # 创建表 conn.execute("CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)") # 插入数据 conn.execute("INSERT INTO students (name, age) VALUES (?, ?)", ("John", 20)) # 查询数据 result = conn.execute("SELECT * FROM students") for row in result: print(row) 最后,我们在程序结束时,记得关闭数据库连接: # 关闭数据库连接 conn.close() 使用wxSQLite,我们可以轻松地在Python程序中操作SQLite数据库。它提供了简单而强大的接口,使得数据的增删改查变得非常方便和高效。无论是小型应用程序还是简单的数据分析,wxSQLite都为我们提供了强大的工具。 ### 回答2: Python是一种功能强大的编程语言,可以用于多种用途。而wxSQLite则是一个用于Python的SQLite数据库操作库,使得Python开发者能够方便地使用SQLite数据库进行数据存储和管理。下面我会用300字详细介绍一下Python使用wxSQLite的情况。 首先,SQLite是一种轻量级的嵌入式数据库引擎,不需要独立的服务器进程,而是直接在应用程序中使用。Python通过使用wxSQLite库,可以方便地与SQLite数据库进行交互,实现数据的增删改查。 Python使用wxSQLite非常简单。首先,需要安装wxSQLite库,可以通过pip包管理工具轻松安装。安装完成后,可以在Python脚本中导入wxsqlite模块,然后使用其提供的API进行数据库操作。 使用wxSQLite,可以创建数据库表格、插入数据、更新数据、删除数据等操作。可以通过执行SQL语句来实现这些操作,也可以使用提供的API函数来进行操作。同时,wxSQLite还提供了一些方便的函数和工具,使得数据操作更加灵活和高效。 另外,wxSQLite还具备一些高级功能,如支持事务、支持数据库加密、支持数据库备份和还原等。这些功能可以极大地提升数据管理的灵活性和安全性。 总之,Python使用wxSQLite可以方便地操作SQLite数据库,实现数据的存储和管理。使用wxSQLite,Python开发者无需关注底层细节,可以快速、高效地进行数据库操作。同时,wxSQLite还具备一些高级功能,使得数据管理更加灵活和安全。对于需要进行简单数据存储和管理的Python项目,wxSQLite是一个很好的选择。 ### 回答3: Python使用wxsqlite是指在Python程序中使用wxsqlite作为数据库的存储引擎。 wxsqlite是一个基于SQLite的开源数据库引擎,它提供了对SQLite数据库的封装,同时结合了wxWidgets库的特性,使得在Python中使用wxsqlite可以更方便地进行数据库操作。 在使用Python的wxsqlite时,首先需要安装wxsqlite模块。可以通过pip安装wxsqlite模块,命令如下: ``` pip install wxsqlite ``` 安装完成后,就可以在Python程序中使用wxsqlite了。 使用wxsqlite进行数据库操作的一般步骤如下: 1. 导入wxsqlite模块:在程序开头使用`import wxsqlite`导入wxsqlite模块。 2. 连接数据库:使用`wxsqlite.connect()`方法连接数据库,传入数据库文件的路径作为参数。 3. 执行SQL语句:使用`wxsqlite.execute()`方法执行SQL语句,可以进行数据库的查询、插入、更新、删除等操作。 4. 获取结果:对于查询操作,可以使用`wxsqlite.fetchall()`方法获取查询结果集。 5. 事务处理:使用`wxsqlite.begin()`方法开始事务,使用`wxsqlite.commit()`方法提交事务,使用`wxsqlite.rollback()`方法回滚事务。 6. 关闭数据库连接:使用`wxsqlite.close()`方法关闭数据库连接。 通过以上步骤,就可以在Python中使用wxsqlite进行数据库操作了。 需要注意的是,wxsqlite是对SQLite数据库的封装,所以在使用wxsqlite时,需要先了解SQLite的基本概念和使用方法,以便更好地理解和使用wxsqlite。 总之,使用wxsqlite可以方便地在Python程序中进行SQLite数据库的操作,为开发者提供了一个简单而强大的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

季截

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值