我有一个要减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
答案 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();
解决了这个问题。