2017-05-31 83 views
1

我目前正在學習android,並且在更新特定列時感到困惑。我想要列+1中的特定行或+1。示例如果值爲15,並且當我想要添加某個值時,它必須在數據庫中+1 = 16。我有函數替換值1比0和0比1像下面更新SQLlite數據庫列行中的值

public void addOrRemoveFavorites(String id, String value) { 
      ContentValues values = new ContentValues(); 
      values.put(QU_FAVORITE, value); 
      database.update(TABLE_QUOTES, values, QU_ID + "=?", new String[] { id }); 
} 

我的更新查詢是像下面

DAO.getInstance(getApplicationContext()).addOrRemoveFavorites(getQuote(mItemIndx).get(KEY_ID), !isChecked ? "1" : "0"); 

任何人都可以請建議我如何我更新值,而不是取代它?

感謝

+0

向我們顯示插入查詢也 – Nisarg

+0

明確指出您的問題。在第一行中,您說的是更新特定列,但在第二行中,您說的是列中的特定行。請澄清您的問題。 –

+0

請檢查我的答案。 –

回答

1

當你給一個,例如,如果有值是15,當我想增加一些價值就必須+1 =數據庫16,它是infering你想讀取以前的數據,然後你想增加它。如果是則有兩種方式:

  1. 創建一個觸發器。
  2. 如果您無法編寫觸發器,請閱讀先前的列數據,然後增加其值,然後將其添加到數據庫中。像: 從代碼:

    public void addOrRemoveFavorites(String id, String value) { 
         ContentValues values = new ContentValues(); 
         values.put(QU_FAVORITE, value); 
         database.update(TABLE_QUOTES, values, QU_ID + "=?", new String[] { id }); 
    } 
    

如果value是以前的數據,那麼你可以做一個這個位置是:

public void addOrRemoveFavorites(String id, String value) { 
       ContentValues values = new ContentValues(); 
       values.put(QU_FAVORITE, value+1); 
       database.update(TABLE_QUOTES, values, QU_ID + "=?", new String[] { id }); 
     } 

因爲原因是,查詢database.update(TABLE_QUOTES, values, QU_ID + "=?", new String[] { id });只需更換以前的數據。

+0

這是好的,按預期工作...非常感謝: ) –

+0

歡迎並且非常感謝。 –

0

試試這個

database.update(TABLE_QUOTES, values, QU_ID + " = ?", 
      new String[] { String.valueOf(id) }); 
+1

這是無效的功能不是別的。 –

+0

這不會改變任何東西....其相同...取代我的價值提供的價值....我想增加行的價值.... –