SQLite:将数据插入表时出现SQL错误或缺少数据库

SQLite:将数据插入表时出现SQL错误或缺少数据库,sqlite,Sqlite,我正在尝试向SQLite表插入新数据 我确信插入代码是正确的,因为我在不同的表中使用它,而且效果很好 我确信数据库和表已经创建并存在,因为我可以在SQLite浏览器中看到它们 但是创建或插入的SQLite语法中有一些错误,因为我收到了以下错误: SQL错误或缺少数据库 这是我的密码: CREATE TABLE IF NOT EXISTS Theory_answers ("questionID" INTEGER,"answerID" INTEGER,"answerText" TEXT, "is

我正在尝试向SQLite表插入新数据

  • 我确信插入代码是正确的,因为我在不同的表中使用它,而且效果很好
  • 我确信数据库和表已经创建并存在,因为我可以在SQLite浏览器中看到它们
但是创建或插入的SQLite语法中有一些错误,因为我收到了以下错误:

SQL错误或缺少数据库

这是我的密码:

CREATE TABLE IF NOT EXISTS Theory_answers ("questionID" INTEGER,"answerID" INTEGER,"answerText" TEXT, "isTrue" INTEGER)

INSERT INTO Theory_answers (questionID, answerID, answerText,isTrue) VALUES ("1","1",text,"0")
这应该是

VALUES ("1","1",text,"0") -> VALUES (1,1,'text',0)

值(“1”、“1”、“文本”、“0”)插入书籍(Id、标题、作者、ISBN).>值(1、,
‘战争与和平’、‘列夫·托尔斯泰’、‘978-0345472403’


对于我可以看到的错误,有两个选项,如果它实际上在您显示的SQL中

  • 您没有用
    终止每一行,这使SQLite无法理解它是两个独立的语句

  • 您忘记在insert语句中引用“text”


通常情况下,您声明的错误是由于SQLite找不到您要求它打开的数据库,这是很难在没有看到任何代码的情况下进行调试的。如果您在SQLite表中添加新列或修改SQLite表时遇到此错误,很可能是因为该表仍在应用程序缓存中。如果您处于开发阶段,最简单的修复方法是进入设置->应用程序->应用程序->存储->删除数据。这将清除所有缓存的内存

否则,您可以通过编程方式选择删除您的_表并重新创建一个新表


希望这对其他人也有帮助。

光标未关闭时可能会出现此问题。 在android和一些语言中,在运行另一个查询之前,应该关闭所有游标

您应该在新查询之前找到所有“选择”查询并关闭所有游标

    final Cursor cur = mDb.rawQuery(
        "select * from mytable;",
.
.
.
cur.close();

如果所有游标都已关闭且查询正确,则代码将正常工作

请检查如果questionId是主键???FWIW,当您同时插入多个值时,在某些版本的sqlite中可能会出现相同的错误。谢谢。事实上,这是引用。我投了赞成票,但似乎约阿希姆的第一个回答是一样的:(@Luda,你是否删除了数字中的引号以使其生效?你使用的是单引号还是双引号?@Luda,按最老的答案排序:)
    final Cursor cur = mDb.rawQuery(
        "select * from mytable;",
.
.
.
cur.close();