Android SQLite更新查询将1添加到值
我正在努力在我的android应用程序中使用Sqlite的更新功能。我只是想给一行中已经存在的值加1 这就是我目前拥有的:Android SQLite更新查询将1添加到值,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在努力在我的android应用程序中使用Sqlite的更新功能。我只是想给一行中已经存在的值加1 这就是我目前拥有的: public void updateItemQty(int SKU) { SQLiteDatabase db = getWritableDatabase(); String p[] = new String[]{String.valueOf(SKU)}; ContentValues args = new ContentVal
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();
}
这个问题是,它没有将1添加到我的key.key\u SENTQTY,而是将sent\u qty1输入表中!我如何实现我所追求的目标
谢谢这是因为
键。KEY\u SENTQTY
是一个字符串
。如何将int
添加到String
?经过一番研究,并被@Selvin指向正确的方向,这是不可能的,因为ContentValues是在查询前设置的,所以您没有要添加的行的值
我的假设是,这是在运行查询时执行的,这是不正确的。从技术上讲,您可以将
发送数量设置为发送数量+1
,但不使用ContentValue,因为这些值会被彻底转义
使用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");
在这种情况下,使用标准更新代码的db.rawQuery(updatetable set col1=col1+1,其中col2=somevalue
)或读取值首先在java代码中添加1,然后使用db.UPDATE使用新值进行更新(为了安全起见,您应该使用事务)。。。无法直接使用db增加/增加值。update@selvin,点击这个答案,我会把它标记为正确的。嗯,我太懒了,你总是可以自己回答:)解释得不好,但有点正确,原因是ContentValues是在查询前设置的,所以Keys没有值。KEY\u sentQuantity