更新SQLlite数据库列行

时间:2017-05-31 04:15:24

标签: java android sqlite

我目前正在学习android,我对更新特定列感到困惑。我希望列中特定行的+1或-1。例如,如果值为15,并且当我想要添加某个值时,它必须在数据库中+1 = 16。我有函数替换值1到0和0到1,如下所示

  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");

任何人都可以建议我如何更新价值而不是替换它?

由于

2 个答案:

答案 0 :(得分:1)

当你给出一个,例如,如果值为15,当我想要添加一些值时,它必须在数据库中+1 = 16,它推断你想要读取以前的数据,然后你想要增加它。如果是,那么有两种方式:

  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 });
     }
    
  3. 如果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 });只是替换以前的数据。

答案 1 :(得分:0)

试试这个

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