1

AndroidSQLiteで次のクエリを実行する必要があります

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

ここで、 rankINTEGER型の列名です。

更新方法を知っています

update(tablename, values, whereClause, whereArgs);

プレーヤー最初の引数として渡し、ランク> = 33番目の引数として渡し、null最後の引数として渡しますが、 2番目の引数として渡すものを見つけることができません。ドキュメントによると、それはContentValuesのオブジェクトである必要があります。

だから私はそのオブジェクトを次のように作成しました

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

テーブルの列であるランクキーの値を何に設定するかについて混乱しています。値のput()メソッドに値として渡すものを教えてください

4

2 に答える 2

5

または、execを使用して、sqlコマンドを実行することもできます。

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

updateメソッドを使用してこれを行うには、カーソルを使用して変数の現在のランクを取得してから、手動で「current+1」を実行する必要があります。

于 2012-04-05T13:02:06.487 に答える
2

更新方法はOne-Size-Fit-All方法ではないと思います。したがって、この種のSQL実行を実現するには、 rawQuery()を使用する必要があると思います。例えば:

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

または、el7rが言ったようにexecSQLを使用するかもしれません

于 2012-04-05T12:59:03.380 に答える