减少不起作用的值

时间:2012-12-31 09:23:05

标签: android sqlite android-sqlite

我有一个要减1的列。以下代码似乎不起作用。

ContentValues dataToUpdate = new ContentValues();                          
dataToUpdate .put(MARKER_ID, MARKER_ID+"-1");
String where = IMAGE_ID_F+" = " +imageId+ " AND "+MARKER_ID+" > "+markerId+";";
int resultUpdate = db.update(TABLE_DEFECTS, dataToUpdate, where, null);

我也试过rawQuery。这不起作用。 MARKER_ID 是该列的名称。

  String restructureDbQuesry="UPDATE "+TABLE_DEFECTS+" SET "+MARKER_ID+" = "+MARKER_ID+"-1"+" WHERE "+IMAGE_ID_F+" = " +imageId+ " AND "+MARKER_ID+" > "+markerId;
  Cursor resultUpdate = db.rawQuery(restructureDbQuesry,null);

迭代后产生的查询:

UPDATE defects SET Marker_Id = Marker_Id-1 WHERE Image_Id = 2 AND Marker_Id > 2

4 个答案:

答案 0 :(得分:0)

你必须像这样使用。

 public int updateCounter(int num,String number,int duration, String currentDate){
    ContentValues cv =new ContentValues();
    cv.put(DIALED_CALL, num-1);
    cv.put(CALL_DURATION, duration);
    cv.put(CALL_DATE, currentDate);
     return db.update(TABLE_LOGS, cv, PHONE_NUMBER + " = ? ", new String []{number});        

}

尝试更改代码。

dataToUpdate .put(MARKER_ID, MARKER_ID-1);

答案 1 :(得分:0)

此行存在问题:

dataToUpdate .put(MARKER_ID, MARKER_ID+"-1");

如果MARKER_ID是列的名称(让我们假设它的'markerid'),那么您将列设置为字符串值“markerid-1”。

答案 2 :(得分:0)

试试这个:

String restructureDbQuesry="UPDATE "+TABLE_DEFECTS+" SET "+MARKER_ID+" = "+MARKER_ID+"-1"+" WHERE "+IMAGE_ID_F+" = " +imageId+ " AND "+MARKER_ID+" > "+markerId;
db.execSQL(restructureDbQuesry,null);

答案 3 :(得分:0)

显然,在执行在游标中没有返回任何内容的查询之后,我们必须对游标执行一些操作。

所以,resultUpdate.moveToFirst();解决了这个问题。