私はそのように構造化されたデータベースを持っています
uid | username | password | email | cur_level
1 default abc123 me@email.com 0
私のゲームでは、メイン アクティビティのレベルを完了した後、increase_current_level()
value++ というメソッドを実行します。test_db.open(); test_db.updateLevel(値); cur_level = 値; test_db.close();
問題なく動作するように見えますが、test_db.updateLevel(value)
実行するとプログラムがクラッシュします。
私の DBHelper では、更新レベルのコードは次のとおりです。
public boolean updateLevel(String level) {
ContentValues args = new ContentValues();
args.put(KEY_CUR_LEVEL, level);
return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "="
+ "WHERE id=(SELECT max(id) FROM DATABASE_TABLE)", null) > 0;
}
私のログ猫のエラーは次のようです:
10-17 17:36:10.833: E/AndroidRuntime(1815): Caused by: android.database.sqlite.SQLiteException: near "WHERE": syntax error (code 1): , while compiling: UPDATE test SET cur_level=? WHERE _id=WHERE id=(SELECT max(id) FROM DATABASE_TABLE)
私は SQLite に非常に慣れていないので、ちょっと怖いですが、誰かが非常に明白な欠陥を見つけてくれることを願っています. ありがとう
更新 1:
私の更新されたコード:
public boolean updateLevel(String level) {
ContentValues args = new ContentValues();
args.put(KEY_CUR_LEVEL, level);
return mDb.update(DATABASE_TABLE, args, KEY_ROWID + " = (SELECT max(id) FROM DATABASE_TABLE",
null) > 0;
}
更新されたエラー メッセージ:
10-17 18:26:50.804: E/AndroidRuntime(3684): Caused by: android.database.sqlite.SQLiteException: near "DATABASE_TABLE": syntax error (code 1): , while compiling: UPDATE test SET cur_level=? WHERE _id = (SELECT max(id) FROM DATABASE_TABLE