Помогите, пожалуйста!Ошибка при доступе к данным внутри курсора, возвращаемого SQLite для Android - PullRequest
1 голос
/ 29 ноября 2010

Я новичок в Android и экспериментирую с SQLite и Android.Я могу получать запросы и использовать результаты курсора, но я не могу заставить этот следующий код работать:

Это мой оператор запроса, где queryWhere = "MyObject =" 1 "" иDATABASE_TABLE_TOQUERY = "FavoriteObjects".Все это нормально при просмотре в средстве просмотра базы данных SQLite, и оно также возвращает правильный результат, если я выполню запрос с помощью моего средства просмотра базы данных SQLite.

public long findObject(String[] keys, String[] values,String DATABASE_TABLE_TOQUERY){
    try {
        if(keys.length<0 || keys.length!=values.length)
            System.exit(-1);
        String queryWhere = keys[0]+"=\""+values[0]+"\"";
        for(int i=1;i<keys.length;i++) {
            queryWhere+=" AND "+keys[i]+"=\""+values[i]+"\"";
        }
        Cursor mCursor = mDb.query(true, DATABASE_TABLE_TOQUERY, null, 
                    queryWhere, null, null, null, null, null);
        if (mCursor != null && mCursor.getCount()>0)
            return Long.parseLong(mCursor.getString(mCursor.getColumnIndex(KEY_ROWID)));

    }catch (SQLException e) {
        return -1;
    }
    return -1;
}

Когда я получу результаты после выполнения оператора запроса, курсорУ mCursor есть хотя бы одна строка, но когда я получаю доступ к этой строке с помощью mCursor.getString (X), он выдает странную ошибку:

android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

Если я проверяю mCursor.getColumnIndex (KEY_ROWID), я получаю 0значение (которое является правильным).У кого-нибудь есть предложения?

Спасибо!Jon

1 Ответ

2 голосов
/ 29 ноября 2010

Попробуйте

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