Странная ошибка nullPointerException - база данных связана - PullRequest
3 голосов
/ 24 марта 2012

я учусь работать с базой данных sqlite, и я попытался внедрить систему рекордов в мою игру. чтение строк работает, когда я пытаюсь показать результаты, но когда я пытаюсь использовать ту же идею для чтения значений, чтобы сравнить их в следующем методе - это дает ошибку исключения нулевого указателя.

private void checkIfHighScore(int currentScore) {
    Cursor note;
    int rowScore;
    String moveName, moveScore, newName;

    for (long i=1;i<6;i++){
        note = mDbHelper.fetchNote(i);
        startManagingCursor(note);
        rowScore=Integer.parseInt(note.getString(note.getColumnIndexOrThrow(ScoresDbAdapter.KEY_BODY)));
        if (currentScore<rowScore){
            for (long j=5;j>i;j--){
                note = mDbHelper.fetchNote(j-1);
                startManagingCursor(note);
                moveName=note.getString(note.getColumnIndexOrThrow(ScoresDbAdapter.KEY_TITLE));
                moveScore=note.getString(note.getColumnIndexOrThrow(ScoresDbAdapter.KEY_BODY));
                mDbHelper.updateNote(j, moveName, moveScore);
            }
            newName="a"; //for testing 
            mDbHelper.updateNote(i, newName, Integer.toString(currentScore));
            break;
        }
    }

}

Я знаю, что ошибка находится в строке после цикла for, но я понятия не имею, что вызывает его сбой. моя база данных имеет 5 строк данных (проверено). Кто-нибудь знает, что является причиной моей ошибки? 2 часа бился головой об стену. спасибо!

1 Ответ

0 голосов
/ 26 сентября 2012

В дополнение к имеющемуся коду вы можете сделать что-то вроде

String selectQuery = "SELECT MAX(COLUMN_NAME) FROM " + TABLE_NAME;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if(cursor.moveToFirst(){
   rowScore = Integer.parseInt(cursor.getString(0);
   if(rowScore < currentScore){
       //you have a new high score
    }
}

Таким образом, вы получаете преимущество от предопределенных функций, которые поставляются с SQLite, которые работают быстрее и экономят некоторую работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...