android.database.CursorIndexOutOfBoundsException: индекс -1 запрошен, с размером 1 - PullRequest
2 голосов
/ 12 сентября 2011

Я всегда получаю исключение android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1 в коде ниже.Посоветуйте пожалуйста что не так.

public boolean Foo(String str) {

        Cursor c = dbHelper.getItemByTitle(str);
        if (c.getCount() == 0) {
            return false;
        } else {
            c.getString(1) // Irrespective of what argument put here I get this exception
            return true;
        }
    }

Ответы [ 2 ]

5 голосов
/ 12 сентября 2011

Я не использовал Sqlite, но я подозреваю, что вам нужно вызвать moveToNext(), чтобы перейти к первой строке, прежде чем запрашивать значения:

if (!c.moveToNext()) {
    return false;
}
String value = c.getString(1);
...

Обратите внимание, что getCount() возвращает количество строк в наборе результатов, но аргумент getString() указывает на столбец число.Также обратите внимание, что, насколько я вижу из документов, номер столбца здесь начинается с нуля, в отличие от JDBC, который основан на единице.

2 голосов
/ 12 сентября 2011

Вы также можете использовать c.moveToFirst(), чтобы проверить, есть ли данные в запросе, который вы возвращаете, так:

if (c.moveToFirst()) 
      return true;
else
      return false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...