1

我必须在Android SQLite中执行以下查询

UPDATE player SET rank=rank+1 WHERE rank >= 3;

这里的rankINTEGER类型的列名。

我知道更新方法

update(tablename, values, whereClause, whereArgs);

我将player作为第一个参数传递,rank >= 3作为第三个参数null作为最后一个参数,但我无法找到作为第二个参数传递的内容。根据文档,它应该是ContentValues的对象。

所以我将它的对象创建为

ContentValues values = new ContentValues();
values.put("rank",?????);

我很困惑将值放在我表中的列的rank键的值上。请建议我将什么作为值传递给值的put() 方法

4

2 回答 2

5

或者,您可以使用 exec 并执行您的 sql 命令

db.execSQL("UPDATE player SET rank=rank+1 WHERE rank >= 3");

要使用 update 方法,您需要使用 Cursor 获取变量中的当前排名,然后手动执行 + 操作“current+1”

于 2012-04-05T13:02:06.487 回答
2

I believe update method is not One-Size-Fit-All method. So I think you need to use rawQuery() to achieve this kind of sql execution. for example:

db.rawQuery("UPDATE player SET rank=rank+1 WHERE rank >= 3;", null);

or perhaps use execSQL as said by el7r

于 2012-04-05T12:59:03.380 回答