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

この行には問題があります:

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

MARKER_ID が列の名前である場合 ('markerid' と仮定します)、列を文字列値 "markerid-1" に設定します。

于 2012-12-31T09:48:43.890 に答える
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

これを試して:

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 に答える