Во-первых, чтобы помочь в отладке, обязательно используйте монитор отладки и Журнал. Это сделает вашу жизнь намного проще в долгосрочной перспективе! Если вы используете Eclipse, выберите Window -> Open Perspective -> Other -> DDMS. LogCat покажет вам, что происходит во время работы программы. Документация описывает это здесь . Запустите вашу программу еще раз и посмотрите LogCat. Это должно дать вам больше информации и сказать, какая строка кода дает сбой.
Что касается вашего кода, первое, что я заметил, это то, что после того, как вы вернули курсор назад, вам необходимо вызвать cursor.moveToFirst (); выбрать (первую) строку. Затем, когда вы вызываете cursor.getString (0);, он указывает нулевой столбец нулевой строки. Если вы не вызываете moveToFirst (); тогда ваш cursor.getString (0) собирается получить нулевой столбец -1-й строки и быть ошибкой индекса вне границ. По умолчанию курсор будет начинаться со строки -1.
В зависимости от того, как вы хотите перемещаться по курсору, и сколько результатов / строк вы получите, вам также может понадобиться вызвать cursor.movetoPosition () или cursor.moveToNext (). Ознакомьтесь с документацией по курсорам здесь .