如何在需要更新时通过ContentValues使用sqlite更新取决于当前值以及如何检索结果?

时间:2016-06-21 10:23:47

标签: android sql sqlite android-sqlite

我在sqlite中的情况让你成为一个例子:我的表有两个字段," _id"和" _score" 。我有_id = 1,_score = 10的记录。我想将此行更新为比当前值(10)多5个数字。在SQL中我可以这么简单:

Update my_table set _score = _score + 5 where _id = 1

但是在sqlite中我有这些,我不知道怎么能把它修复到我想要的东西:

ContentValues values = new ContentValues();
values.put("_score", my_value);
SQLiteDatabase db = SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, SQLiteDatabase.OPEN_READWRITE);
int id = db.update(MY_TABLE,values,"_id = ?",new String[]{String.valueOf(my_id)});

,其他问题是返回的值。我想在上面的例子中我给出了

id = 1

对1行有影响。但我想知道:有没有办法检索更新列的值(在我的例子中,我想给出" 15")。我们从

获取的SQL服务器中的一些东西
"@@ROWCOUNT" or "@@fetch_status"

希望能够很好地描述它。感谢。

2 个答案:

答案 0 :(得分:1)

Android的update()功能只能设置固定值。

要执行SQL语句,您必须使用execSQL()

db.execSQL("Update my_table set _score = _score + 5 where _id = 1");

在SQLite中,UPDATE语句不返回任何数据(受影响的行的数量除外)。要获取旧数据或新数据,必须单独执行SELECT。

答案 1 :(得分:-1)

关于更新分数值的第一个问题,请尝试以下方法:

ContentValues values = new ContentValues();
values.put("_score", my_value);
SQLiteDatabase db = SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, SQLiteDatabase.OPEN_READWRITE);
int id = db.update(my_table, values, _id + " = ?",
        new String[] { String.valueOf(my_id) });
}