2012-03-23 53 views
2

我有一個表在我的數據庫有三列:屏幕,圖標和秩:我試圖找到最乾淨的方式來實現以下..我如何遞減SQLite表的int列

我想找到的所有行屏幕=「自選畫面」和排名> 5 //然後做出一個等級小於電流值..我在Java中通過下面的函數一個SQLite Manager類這樣做:

public void DeleteScreenIcon (int id, String screenName, int rank){ 
     int screenID = getScreenID(screenName); 
     SQLiteDatabase db=this.getWritableDatabase(); 
     db.delete(isLookUp, colScreenID + "=" + screenID + " and " +colIconID+ "="+id, null); 
     // HERE IS WHERE I NOW WANT TO DO THAT.. 
     db.execSQL("update "+ isLookUp +" set "+colRank+ "=" +colRank+ " -1 "+" where " + colScreenID + "='" +screenName + "' and " + colRank +">" +rank); 
     db.close(); 
    } 

對不起,即時通訊不熟悉SQL任何幫助表示讚賞

+0

在SQL中,您可以簡單地在更新語句中執行'Rank = Rank-1'。 – Sjoerd 2012-03-23 13:02:43

+0

我有類似的問題: - 'ContentValues dataToInsert = new ContentValues(); dataToInsert.put(MARKER_ID,MARKER_ID +「 - 1」); String where = IMAGE_ID_F +「=」+ imageId +「AND」+ MARKER_ID +「>」+ markerId +「;」; int resultUpdate = db.update(TABLE_DEFECTS,dataToInsert,where,null);' – 2012-12-31 09:12:49

+0

上述似乎不起作用。 – 2012-12-31 09:14:07

回答

5

此更新記錄uld做竅門:

UPDATE myTable 
SET Rank = Rank - 1 
WHERE Screen = "myScreen" 
AND Rank > 5; 
+0

謝謝你不確定你可以使用這樣的設置..真棒! – erik 2012-03-23 13:08:34

+0

我在上面添加了一行代碼給我的方法來反映你的反應,並想知道我是否在java中正確地設置了這個格式? – erik 2012-03-23 13:24:52

+0

沒關係..我得到它感謝一堆! – erik 2012-03-23 14:00:59