【问题标题】:No such table Sqlite error iOS没有这样的表Sqlite错误iOS
【发布时间】:2016-11-18 10:34:36
【问题描述】:

我正在 iOS 应用程序中使用 sqlite。我已成功创建登录和注册屏幕和表格。现在,我正在创建另一个表来保存数据。该表已创建,但是当我运行查询以插入值时,出现以下错误 --- “没有这样的表:proposalInfo”。有人可以帮我吗?

【问题讨论】:

  • 很明显,表还没有创建。
  • 编写您的代码如何制作表格以及制作表格的位置。
  • 我已经通过终端创建了表。现在当我收到此错误时尝试在其中插入值。
  • 我同意你的看法。但我无法在这些 cmets 中描述我的代码。你能建议一个替代品吗?
  • 是的,我已经检查了这些要点并进行了处理。但错误仍然存​​在。

标签: ios iphone sqlite


【解决方案1】:

如果您在终端上创建了数据库,那么问题很可能是您如何将您从终端访问的数据库获取到您的 iOS 设备上。通常你会将它包含在包中(并确保你有一个对适当目标的复选标记),然后你会有在“应用程序支持”目录中查找数据库的代码,如果找不到,复制它从捆绑到那里。 (注意,在过去,我们会推荐“Documents”文件夹,但现在它是用于面向用户的文件;我们现在使用“Application Support”目录来存放应用程序内部使用的文件。)典型的问题是简单的错误在那个逻辑中(可能在以前的开发迭代中),它未能正确复制它,然后调用sqlite3_open 创建空白数据库。

可能在此过程中的某个地方,错误检测/报告不足,因此未检测到某些错误并创建了空白数据库。所以,我会推荐:

  • 从设备中删除应用程序(删除“应用程序支持”文件夹中的任何空白数据库,如果有的话);

  • 仔细检查错误检测/报告(例如检查所有NSFileManager方法返回码和NSError对象);

  • 不要使用sqlite3_open,而是使用sqlite3_open_v2,这样它就永远不会创建空白数据库(即,使用SQLITE_OPEN_READWRITE 选项,但不是 SQLITE_OPEN_CREATE);和

  • 再次运行应用程序,看看您是否可以确定它在哪里出错了。


顺便说一句,如果您不相信我们的表确实从数据库中丢失,我建议您从 macOS SQLite 工具打开模拟器的数据库,然后简单地确认。所以

  • 导航到模拟器的“Application Support”文件夹:

    ~/Library/Developer/CoreSimulator/Devices/[GUID]/data/Containers/Data/Application/[GUID]/Library/Application Support

  • 在您的 SQLite 终端界面中打开该数据库,并确认相关表是否存在。

【讨论】:

    【解决方案2】:

    请使用 SQLite 浏览器创建表。您可以从here 下载哪个。 然后按照以下步骤进行

    1) 通过点击打开您的项目数据库。

    2) 创建表查询或使用 UI。

    3) 随心所欲地执行查询。

    【讨论】:

      猜你喜欢
      • 2010-12-29
      • 2015-05-11
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      相关资源
      最近更新 更多