Метод, который вы описываете, не используется в реальной жизни по нескольким причинам, одна из которых заключается в том, что вы будете занимать слишком много места в памяти по мере увеличения базы данных.
Если я хорошо понимаю вашу проблему, вам даже не нужно извлекать данные, вам просто нужно указать правильное положение where в методе обновления.
Приведенный ниже код является просто способом изменить рекорд на 500, если рекорд в настоящее время ниже, чем в строке с playerId 5.
int highscore = 500;
int playerId = 5;
ContentValues cv=new ContentValues();
cv.put("highscore", highscore);
String where = "id=? AND highscore<?";
String[] whereArgs = {Integer.toString(playerId), Integer.toString(minimalScore};
db.update("scoretable", cv, where , whereArgs);
Если вам действительно необходимо выполнить вычисления для данных в базе данных, вам нужно сначала запросить их с помощью db.query (). Вы получите курсор, по которому вы можете перебирать. Этот курсор читает эту базу данных, но не сохраняет все значения. Вы можете извлечь из него всю необходимую информацию и затем сделать соответствующие заявления об обновлении.
Чтобы удалить, например, все баллы ниже 100, вы можете сделать следующее.
int lowestAllowableScore = 100;
db.delete("scoretable", "score<?", new String[] {Integer.toString(lowestAllowableScore)});
редактировать //
Для этого вы можете использовать метод вставки Android:
Обратите внимание, что я не использовал заглавные буквы для запуска переменных.
ContentValues value=new ContentValues();
value.put("score", curscore); // We want to put curscore in the new row in the score column
value.put("mode", curmode);
value.put("diff", curdiff);
value.put("date", curdate);
db.insert("scoretable",null,value);
Вы должны взглянуть на документацию sqlite для операторов вставки. С помощью методов Android нет необходимости создавать настоящий код SQL.