我目前正在学习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");
任何人都可以建议我如何更新价值而不是替换它?
由于
答案 0 :(得分:1)
当你给出一个,例如,如果值为15,当我想要添加一些值时,它必须在数据库中+1 = 16,它推断你想要读取以前的数据,然后你想要增加它。如果是,那么有两种方式:
如果您无法编写触发器,请读取先前的列数据,然后增加其值,然后将其添加到数据库中。喜欢: 从你的代码:
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 });
只是替换以前的数据。
答案 1 :(得分:0)
试试这个
database.update(TABLE_QUOTES, values, QU_ID + " = ?",
new String[] { String.valueOf(id) });