我在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"
希望能够很好地描述它。感谢。
答案 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) });
}