Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite更新查询将1添加到值_Android_Sqlite_Android Sqlite - Fatal编程技术网

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

我正在努力在我的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();
    }
这个问题是,它没有将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