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