1

我有一列要减 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

4 回答 4

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);
于 2012-12-31T09:40:10.537 回答
0

这条线有问题:

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

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

于 2012-12-31T09:48:43.890 回答
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);
于 2013-01-08T19:36:44.563 回答
0

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

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

于 2013-01-09T08:50:54.223 回答