我知道可能有一件我想念的简单事情,但在过去的一两个小时里,我一直在撞墙。我有一个我正在使用的Android应用程序的数据库(Android v1.6),我只想在数据库表中插入一条记录。我的代码如下所示:
//Save information to my table
sql = "INSERT INTO table1 (field1, field2, field3) " +
"VALUES (" + field_one + ", " + field_two + ")";
Log.v("Test Saving", sql);
myDataBase.rawQuery(sql, null);
myDataBase变量是一个SQLiteDatabase对象,可以从架构中的另一个表中选择数据。保存似乎工作正常(在LogCat中没有错误)但是当我从设备复制数据库并在sqlite浏览器中打开时,新记录不存在。我也尝试在sqlite浏览器中手动运行查询,并且工作正常。 table1的表模式是_id,field1,field2,field3。
非常感谢任何帮助。谢谢!
答案 0 :(得分:10)
您的查询无效,因为您为3列提供了2个值。您的原始查询应如下所示:
sql = "INSERT INTO table1 (field1, field2) " +
"VALUES (" + field_one + ", " + field_two + ")";
虽然您的架构包含三个字段。顺便说一句,您可以看到日志以查看sqlite的实际错误报告。
答案 1 :(得分:6)
CommonsWare在评论中给出了正确的答案。您应该使用execSql()而不是rawQuery()。它就像一个魅力。
我认为这对其他人有用,不必深入评论以找到正确的答案。
答案 2 :(得分:5)
因为它是一个字符串值,你忘了“'”添加...这个查询肯定会有效,我测试了
sql = "INSERT INTO table1 (field1, field2) " +
"VALUES ('" + field_one + "', '" + field_two + "')";
答案 3 :(得分:0)
我更改了我的代码以使用myDataBase.insert()而不是rawQuery(),并且它正在运行。我不确定为什么实际的sql查询不起作用,所以如果有人能说清楚我仍然会欣赏它。