Я новичок в Android Studio, и это мое первое приложение в целом, где я работаю с подключением к базе данных, поэтому я просто могу принципиально не понимать, как работает курсор.Android Studio - Cursor.getString() throwing exception
Я запрашиваю свою базу данных, и тесты показывают, что запрос успешный, в частности метод getCount() возвращает 2 как количество строк, содержащихся в объекте курсора. Однако, когда я вызываю метод getString(), он генерирует исключение вместо возврата данных столбца.
Что-нибудь выскочит сразу, что может быть неправильно с этим кодом?
public void GetFacts(View v) {
Cursor cursor = database.query(ExternalDbOpenHelper.TABLE_NAME,
null, "valueRange = 'MEDIUM'", null, null, null, null);
// Log number of rows from query
Log.d("CursorTest", "Row count: " + cursor.getCount());
try {
// get data from "factName" column of database
String columnName = cursor.getColumnName(0);
Log.d("CursorTest", "Column Name: " + columnName);
String data = cursor.getString(cursor.getColumnIndex(columnName));
} catch(Exception e) {
// Log exception thrown
Log.d("CursorTest", "Error getting data: " + e.getMessage());
}
}
И журнал дает мне следующее:
D/CursorTest: Количество строк: 2
D/CursorTest: Колонка Название: factName
D/CursorTest : Ошибка получения данных: запрошенный индекс -1, с размером 2
Задавая вопрос об исключении или регистрации один, убедитесь, чтобы сообщить ** тип ** за исключением, например, CursorIndexOutOfBoundsException , а не только сообщение об исключении. Это самая важная информация для выяснения того, что пошло не так. Вы можете легко найти это, добавив исключение (ваш параметр 'e') в качестве третьего параметра в вызов' Log.d() '. – LarsH