Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
akyma40
16 / 15 / 3
Регистрация: 20.05.2015
Сообщений: 115
#1

Получение данных из cursor - Программирование Android

15.07.2016, 16:44. Просмотров 252. Ответов 1
Метки нет (Все метки)

У меня огромный вопрос по работе с SQLite, а именно Cursor. В общем то при запросе к бд все норм, при создании класса бд все норм, везде все норм, но один лишь курсор, из за которого у меня горит уже не первый день, не работает.
Сразу даю код ошибок
07-15 19:27:12.688: E/AndroidRuntime(20791): FATAL EXCEPTION: AsyncTask #2
07-15 19:27:12.688: E/AndroidRuntime(20791): java.lang.RuntimeException: An error occured while executing doInBackground()
07-15 19:27:12.688: E/AndroidRuntime(20791): at android.os.AsyncTask$3.done(AsyncTask.java:299)
07-15 19:27:12.688: E/AndroidRuntime(20791): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
07-15 19:27:12.688: E/AndroidRuntime(20791): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
07-15 19:27:12.688: E/AndroidRuntime(20791): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
07-15 19:27:12.688: E/AndroidRuntime(20791): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
07-15 19:27:12.688: E/AndroidRuntime(20791): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
07-15 19:27:12.688: E/AndroidRuntime(20791): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
07-15 19:27:12.688: E/AndroidRuntime(20791): at java.lang.Thread.run(Thread.java:856)
07-15 19:27:12.688: E/AndroidRuntime(20791): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
07-15 19:27:12.688: E/AndroidRuntime(20791): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:424)
07-15 19:27:12.688: E/AndroidRuntime(20791): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
07-15 19:27:12.688: E/AndroidRuntime(20791): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
07-15 19:27:12.688: E/AndroidRuntime(20791): at ru.gelsen.onkel.DatabaseHandler.getUser(DatabaseHandler.java:67)
07-15 19:27:12.688: E/AndroidRuntime(20791): at ru.gelsen.onkel.Mailer.doInBackground(Mailer.java:82)
07-15 19:27:12.688: E/AndroidRuntime(20791): at ru.gelsen.onkel.Mailer.doInBackground(Mailer.java:1)
07-15 19:27:12.688: E/AndroidRuntime(20791): at android.os.AsyncTask$2.call(AsyncTask.java:287)
07-15 19:27:12.688: E/AndroidRuntime(20791): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
07-15 19:27:12.688: E/AndroidRuntime(20791): ... 4 more

а вот собственно код в DabaseHandler.getUser()

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.query(TABLE_USERS, new String[] { KEY_ID,
                KEY_FIRST_NAME, KEY_LAST_NAME, KEY_URI_PHOTO },
                KEY_ID + " = ?", new String[] { String.valueOf(id) }, null,
                null, null, null);
        User userOfId;
        if (cursor != null) {
            cursor.moveToFirst();
            userOfId = new User(Integer.parseInt(cursor.getString(0)),
                    cursor.getString(1), cursor.getString(2),
                    cursor.getString(3));
        } else {
            userOfId = new User(false);
        }
Помогите, имхо сам я не могу понять что ему надо, постоянно выдает ошибку при получении данных от cursor. Постоянно ошибка в cursor.getString, то есть он видит что есть столбики, он не пустой (в логи писал какие столбики есть и не пустой ли cursor). Ругается он собственно на это:
Java
1
2
3
userOfId = new User(Integer.parseInt(cursor.getString(0)),
                    cursor.getString(1), cursor.getString(2),
                    cursor.getString(3));
при любом получении данных из столбца ругается. ЧЕ ДЕЛАТЬ ТО, КОГДА ВОТ ТАК??????
http://www.cyberforum.ru/android-dev/thread1675136.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2016, 16:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Получение данных из cursor (Программирование Android):

Cursor
Подскажите как быть дальше. Есть БД, к ней прикрутил курсор DB db; ...

RawQuery using cursor
Здравствуйте. Я сформировал запрос в БД : Cursor cursor2 =...

ArraList or Cursor
Вечер добрый. есть быстрый метод поиска, такого элемента, в ArrayList или...

Получение данных от Bluetooth
Доброго времени суток, помогите разобраться, не получается отделить мух от...

Получение данных с SimpleCursorAdapter
Скопировал себе в приложение пример из библиотеки шерлок, с табами. оно...

1
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
15.07.2016, 18:49 #2
Лучший ответ Сообщение было отмечено akyma40 как решение

Решение

Java
1
2
3
4
5
6
7
        if (cursor != null && cursor.moveToFirst()) {
            userOfId = new User(Integer.parseInt(cursor.getString(0)),
                    cursor.getString(1), cursor.getString(2),
                    cursor.getString(3));
        } else {
            userOfId = new User(false);
        }
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2016, 18:49
Привет! Вот еще темы с решениями:

Получение данных с квадрокоптера
Всем доброго времени суток, подскажите как и с чего начать, никогда не...

Получение данных по расписанию
Немного не могу решить, как это реализовать. В общем, при первом запуске...

Получение данных из DialogFragment
Добрый день. Задача: получать данные из DialogFragment. Диалог вызывается из...

Заполнить RecyclerView из Cursor
Ребят подскажите плз, есть ли способы закинуть данные с бд типа Cursor в список...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru