Android插入sqlite数据库

时间:2010-04-11 05:24:19

标签: android sqlite

我知道可能有一件我想念的简单事情,但在过去的一两个小时里,我一直在撞墙。我有一个我正在使用的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。

非常感谢任何帮助。谢谢!

4 个答案:

答案 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查询不起作用,所以如果有人能说清楚我仍然会欣赏它。