SQLiteを使用してデータベース内の情報を更新するために、次のコードを書いています。そのアイデアは、エントリがすでに存在する場合には値(userAverageTime)を更新するか、エントリがまだ存在しない場合は新しいレコードを作成することです。androidでSQLiteデータベースを更新する最速の方法(またはレコードがまだ存在しない場合は追加する)
public void updateTableLevelsAverageTime(DatabaseOperations dop, LinkedList<Level> levels) {
SQLiteDatabase SQ = dop.getWritableDatabase();
String selection = KEY_NUMBERS + " = ?";
for (Level level: levels) {
String[] args = {level.toString()};
ContentValues cv = new ContentValues();
cv.put(KEY_AVERAGE_TIME, level.getAverageTime());
int result = SQ.update(TABLE_LEVELS, cv, selection, args);
if (result == 0) {
//If the entry doesn't exist, it must be a new level... thus add it with 0 as userseconds
ContentValues cv2 = new ContentValues();
cv2.put(KEY_NUMBERS, level.toString());
cv2.put(KEY_AVERAGE_TIME, level.getAverageTime());
cv2.put(KEY_USER_TIME, 0);
SQ.insert(TABLE_LEVELS, null, cv2);
Log.d("Database operations", "Row added");
}
else {
Log.d("Database operations", "Row updated");
}
}
SQ.close();
}
(KEY _ ***コードの別の場所で定義されている列の名前です)
これが最善のアプローチだった場合、私はしかし、思っていた。ここで
はコードです。コードを実行するにはかなりの時間がかかります。
データを更新したい場合は、このバッチ方式で行うことができます。しかし、レコードが存在する場合にのみ更新したい場合や、レコードが存在しない場合にレコードを追加したい場合は、これを実行できますか?