请为我完善这个更新方法public Boolean updateScoreById(Integer id,Integer score)要求使用SQLiteDatabase根据id修改score,如果score比之前的大则更新,反之则不更新,请给我完整代码
时间: 2024-05-01 10:21:24 浏览: 89
Java中Integer两种转int方法比较
5星 · 资源好评率100%
好的,请参考以下代码:
```java
public Boolean updateScoreById(Integer id, Integer score) {
SQLiteDatabase db = getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT score FROM user WHERE id=?", new String[]{String.valueOf(id)});
if (cursor.moveToFirst()) {
int oldScore = cursor.getInt(0);
if (score > oldScore) {
ContentValues values = new ContentValues();
values.put("score", score);
int rows = db.update("user", values, "id=?", new String[]{String.valueOf(id)});
if (rows > 0) {
return true;
}
} else {
return false;
}
}
cursor.close();
return false;
}
```
这个方法首先通过传入的id从数据库中查询出原有的score值,如果新的score比原有的score大,则使用ContentValues更新数据库中的score值,如果更新成功,则返回true,否则返回false;如果新的score比原有的score小,则不更新并返回false。如果查询过程中没有找到对应的记录,则直接返回false。注意,这个方法需要在主线程之外执行,否则可能会抛出异常。
阅读全文