我正在尝试将新数据插入到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")
答案 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();
如果所有光标都关闭且您的查询正确,您的代码将正常工作。