我正在 iOS 应用程序中使用 sqlite。我已成功创建登录和注册屏幕和表格。现在,我正在创建另一个表来保存数据。该表已创建,但当我运行查询插入值时,出现以下错误 ---“没有这样的表:proposalInfo”。有人可以帮我吗?
如果您在终端上创建了数据库,那么问题可能在于您如何将从终端访问的数据库获取到您的 iOS 设备。通常您会将其包含在捆绑包中(并确保您有针对适当目标的复选标记),然后您将拥有在 \xe2\x80\x9cApplication Support\xe2\x80\x9d 目录中查找数据库的代码,如果没有找到它,请将其从捆绑包复制到那里。(请注意,在过去,我们会推荐 \xe2\x80\x9cDocuments\xe2\x80\x9d 文件夹,但现在这是面向用户的文件;我们使用 \xe2\x80\x9cApplication Support\xe2\x80\ x9d 目录现在用于在应用程序内部使用的文件。)典型的问题是该逻辑中的简单错误(可能在之前的开发迭代中),它无法正确复制它,然后调用sqlite3_open它创建了空白数据库。
可能在此过程中的某个地方,错误检测/报告不足,因此未检测到某些错误并创建了空白数据库。所以,我建议:
\n从设备中删除应用程序(以删除 \xe2\x80\x9cApplication Support\xe2\x80\x9d 文件夹中的任何空白数据库(如果有));
\n双重检查错误检测/报告(例如检查所有NSFileManager方法返回代码和NSError对象);
不要使用sqlite3_open,而是使用sqlite3_open_v2这样它就永远不会创建空白数据库(即,使用SQLITE_OPEN_READWRITE选项,但不使用 SQLITE_OPEN_CREATE);和
再次运行应用程序,看看您是否可以确定过程中哪里出了问题。
\n顺便说一句,如果您不相信我们数据库中确实缺少该表,我建议您从 macOS SQLite 工具打开 Simulator\xe2\x80\x99s 数据库,然后进行简单确认。所以
\n导航到模拟器 \xe2\x80\x99s \xe2\x80\x9cApplication Support\xe2\x80\x9d 文件夹:
\n\n\n〜/库/开发人员/CoreSimulator/设备/[GUID]/数据/容器/数据/应用程序/[GUID]/库/应用程序支持
\n
和
\n在 SQLite 终端界面中打开该数据库,并确认相关表是否存在。
\n