我在iOS应用中使用sqlite。我已成功创建登录和注册屏幕和表格。现在,我正在创建另一个表来保存数据。该表已创建,但是当我运行查询以插入值时,我得到以下错误---“没有这样的表:proposalInfo”。有人可以帮助我吗?
答案 0 :(得分:4)
如果您在终端上创建了数据库,则问题很可能是您从终端访问iOS设备的数据库。通常你将它包含在捆绑包中(并确保你有一个针对相应目标的复选标记),然后你有代码在Documents中查找数据库,如果找不到它,从中复制它捆绑到文档。典型的问题是该逻辑中的简单错误(可能在之前的开发迭代中),它无法正确复制它,然后调用sqlite3_open
来创建空白数据库。
可能,在此过程的某个地方,没有足够的错误检测/报告,因此一些错误未被检测到并且创建了空白数据库。所以,我建议:
从设备中删除app(删除Documents文件夹中的任何空白数据库,如果有的话);
仔细检查错误检测/报告(例如,检查所有NSFileManager
方法返回码和NSError
个对象);
不要使用sqlite3_open
,而是使用sqlite3_open_v2
,以便它永远不会创建空白数据库(即使用SQLITE_OPEN_READWRITE
选项,但不是 SQLITE_OPEN_CREATE
);以及
再次运行应用程序,看看您是否可以确定进程中出错的位置。
顺便说一句,如果您不相信我们数据库中确实缺少该表,我建议您从macOS SQLite工具打开模拟器的数据库,然后确认。所以
导航到模拟器的Documents文件夹:
〜/库/开发商/ CoreSimulator /设备/ [GUID] /数据/容器/数据/应用/ [GUID] /文件
在SQLite终端界面中打开该数据库,并确认相关表格的存在与否。
答案 1 :(得分:-1)