我知道可能有一件我想念的简单事情,但在过去的一两个小时里,我一直在撞墙.我有一个我正在使用的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.
任何帮助将不胜感激.谢谢!
您的查询无效,因为您为3列提供了2个值.您的原始查询应如下所示:
sql = "INSERT INTO table1 (field1, field2) " + "VALUES (" + field_one + ", " + field_two + ")";
虽然您的架构包含三个字段.顺便说一下,您可以看到日志以查看sqlite的实际错误报告.
CommonsWare在评论中给出了正确的答案.您应该使用execSql()而不是rawQuery().它就像一个魅力.
我认为这对其他人有用,不必挖掘评论以找到正确的答案.
因为它是一个字符串值你忘了"'"添加...这个查询肯定会工作,我测试
sql = "INSERT INTO table1 (field1, field2) " + "VALUES ('" + field_one + "', '" + field_two + "')";