wxsqlite3 rekey加解密,5642错误SQLITE_IOERR_SEEK

sqlite3本身没有提供加解密的实现代码,wxsqlite3实现了这个接口,4.5.1版的加解密接口sqlite3_rekey在codecext.c文件里面,

在sqlite3_rekey_v2接口里面是逐页读取然后加密再写进去,如果板子性能不好会比较耗时,最好打印一下进度。

在新建空的数据库时可以使用sqlite3_key直接加密数据库,现有数据库需要使用rekey加密或修改密码或解密。

 

如果之前已经加密过,需要在打开数据库时立即调用sqlite3_key输入密码解密,

并且有些嵌入式系统不支持VFS,journal_mode不能为wal,必须改为delete,否则输入密码不会立即执行解密,还是加密的状态,

可能会提示26错误码,not an SQLite database file.

 

在加密时需要重新写入页,可能会报IOERR 10或者5642 SEEK错误,这个时候需要检查一下写入数据库文件的代码,

我的是write seek那里搞错了,ofst不为零就报错,改成<0报错就好了。

 

附上sqlite3所有错误代码解释:

https://sqlite.org/rescode.html

posted @ 2022-10-19 17:16  科学修行的红客  阅读(243)  评论(0编辑  收藏  举报