我在iOS项目中使用sqlite作为数据库。在iOS 9中,所有东西都运行得很好。现在我更新了新的Xcode。但是应用程序在sqlite3_prepare_v2'上多次崩溃。
另外,我没有关闭数据库加班。并且只打开一次。 我在下面的代码b中添加了DB open,在调试中我发现了DB关闭。但仍然崩溃了。
任何人都可以帮助我吗?
提前致谢
答案 0 :(得分:0)
我认为问题在第2592行。
将密钥传递给sqlite3_key(...)时不要将密钥视为字符串 不确定如何生成密钥但是如果设置了第一个字节' \ 0'然后strlen返回0 (如果你使用一些基于NSData随机字节的自动生成助手,可能会经常发生这种情况)
sqlite3_key定义:
SQLITE_API int SQLITE_STDCALL sqlite3_key(sqlite3 *db, const void *pKey, int nKey)
它期望nKey字节在" \ 0"也是允许的
而是尝试:
NSData *passBytes = [g_sqlite_key dataUsingEncoding:NSUTF8StringEncoding];
int status = sqlite3_key(contactDB, passBytes.bytes, passBytes.length);
if (status != SQLITE_OK) {
// handle error and return
}
// continue...