7

我正在尝试将新数据插入 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");
4

4 回答 4

9

这应该是……

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

或者

VALUES ("1","1","text","0") <-- if you need to double quote all values?

查看此链接,它建议插入是在文本周围使用单引号完成,而数字周围没有引号......

sqlite> INSERT INTO Books(Id, Title, Author, ISBN) ...> VALUES(1, 'War and Peace', 'Leo Tolstoy', '978-0345472403');

于 2013-08-11T15:08:59.610 回答
4

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

  • 您没有用 终止每一行;,这使得 SQLite 不明白它是两个单独的语句。

  • 您忘记在插入语句中引用“文本”。

通常,您所说的错误是由于 SQLite 没有找到您要求它打开的数据库,这在没有看到任何代码的情况下很难调试。

于 2013-08-11T15:09:17.187 回答
1

如果您因向/或修改 SQLite 表添加新列而收到此错误,则很可能是因为该表仍在您的应用缓存中。如果您处于开发阶段,最简单的解决方法是转到 Settings->Applications->Your App->Storage->Delete Data。这将清除所有缓存的内存。

否则,以编程方式,您可以选择删除 TABLE YOUR_TABLE 并重新创建一个新表。

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

于 2016-08-05T17:15:39.243 回答
0

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

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

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

如果所有游标都关闭并且您的查询是正确的,您的代码将正常工作。

于 2017-02-25T07:42:07.140 回答