我正在努力在我的Android应用程序中使用Sqlite的更新功能。我只是尝试将1添加到已存在的行中。
这就是我目前所拥有的:
public void updateItemQty(int SKU) {
SQLiteDatabase db = getWritableDatabase();
String p[] = new String[]{String.valueOf(SKU)};
ContentValues args = new ContentValues();
args.put(Keys.Key_SENTQTY, Keys.Key_SENTQTY + 1);
try {
db.update(Keys.Key_CARTONITEMTABLE, args, Keys.Key_SKU + " = ? AND " + Keys.Key_STATUS + " = 0 ", p);
} catch (SQLiteException e) {
e.printStackTrace();
}
db.close();
}
这个问题是,不是在我的key.KEY_SENTQTY中添加1,而只是将sent_qty1输入到表中!我如何实现我的目标?
由于
答案 0 :(得分:1)
从技术上讲,您可以将sent_qty
设置为sent_qty + 1
,但不能使用contentValues,因为它们会彻底转义。
使用execSQL
,您可以:
db.execSQL("update " + Keys.Key_CARTONITEMTABLE
+ " set " + Keys.Key_SENTQTY + " = " + Keys.Key_SENTQTY + " + 1 where "
+ Keys.Key_SKU + " = " + SKU + " and " + Keys.Key_STATUS + " = 0");
答案 1 :(得分:0)
这是因为Keys.KEY_SENTQTY
是String
。你应该如何将int
添加到String
?
答案 2 :(得分:0)
经过一些研究并被@Selvin指向正确的方向后,这是不可能的,因为ContentValues是在查询前设置的,所以你也没有要添加的行的值。
我的假设是,这是在运行查询时执行的,这是不正确的。