SQLite:将数据插入表时SQL错误或丢失数据库

时间:2013-08-11 15:06:20

标签: sqlite

我正在尝试将新数据插入到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 个答案:

答案 0 :(得分:8)

应该是......

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

或者

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

看一下这个link,它建议在文本周围用单引号完成插入,并且数字周围没有引号......

  

源码&GT; INSERT INTO Books(Id,Title,Author,ISBN)...&gt; VALUES(1,   '战争与和平','利奥托尔斯泰','978-0345472403';

答案 1 :(得分:3)

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

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

  • 您忘记在插入声明中引用“text”。

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

答案 2 :(得分:1)

如果您在向/或修改SQLite表添加新列时收到此错误,则很可能是因为该表仍在您的应用缓存中。最简单的解决方法是,如果您处于开发阶段,请转到设置 - >应用程序 - >您的应用程序 - >存储 - >删除数据。这将清除所有缓存的记忆。

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

希望这也有助于其他人。

答案 3 :(得分:0)

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

你应该找到所有&#34;选择&#34;在新查询之前查询并关闭所有光标

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

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