SQLite3 执行sqlite3_prepare_v2的时候提示“Error:no such table: bookCollect”的缘故解析

SQLite3 执行sqlite3_prepare_v2的时候提示“Error:no such table: bookCollect”的原因解析

问题如下:

1、执行SQL编译的时候sqlite3_prepare_v2(sqlite, [sql UTF8String], -1, &stmt, NULL)的返回值为1,对应Apple的解释是

SQLite3 执行sqlite3_prepare_v2的时候提示“Error:no such table: bookCollect”的缘故解析

也就是找不到数据库文件,虽然我在模拟器文件中查看到数据库文件


解释:

这个就是SQLite3的自动处理机制,也就是“if it doesn't find the database,it will creat a blank database”,所以模拟器看到的数据库文件只是SQLite3进行编译的时候无法找到数据库文件从而自动创建的一个空的数据库文件。当然走到sqlite3_prepare_v2的时候会提示“Error:no such table: bookCollect”

参考:stack voerflow :stackoverfl(哈哈)ow.com/questions/21756185/sqlite3-prepare-v2-no-such-table


解决方法:

1、这是database的相对路径即可

    NSString *filePath = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/%@",KFilename];

2、如果执行SQL语句有错误的时候,可以使用下面的API接口显示详细的错误信息

SQLite3 执行sqlite3_prepare_v2的时候提示“Error:no such table: bookCollect”的缘故解析