Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
akyma40
16 / 15 / 3
Регистрация: 20.05.2015
Сообщений: 107
#1

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

15.07.2016, 16:44. Просмотров 185. Ответов 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));
при любом получении данных из столбца ругается. ЧЕ ДЕЛАТЬ ТО, КОГДА ВОТ ТАК??????
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2016, 16:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получение данных из cursor (Программирование Android):

Cursor - Программирование Android
Пытаюсь курсором передать данные, но что то ему не нравится Вот так передаю public class GetNewsDB { DB db; RemindDTO...

Cursor - Программирование Android
Подскажите как быть дальше. Есть БД, к ней прикрутил курсор DB db; @Override protected void onCreate(Bundle...

RawQuery using cursor - Программирование Android
Здравствуйте. Я сформировал запрос в БД : Cursor cursor2 = db.rawQuery("SELECT catname4 FROM contact_table WHERE catname2='Riko'...

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Pablito
2473 / 1918 / 595
Регистрация: 12.05.2014
Сообщений: 6,742
Завершенные тесты: 1
15.07.2016, 18:49 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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);
        }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2016, 18:49
Привет! Вот еще темы с ответами:

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

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

Рэндомно забрать из cursor - Программирование Android
Доброго времени! Мне нужно рэндомно забрать из cursor слово и заполнить буквами из него button на TableLayout т.е. каждую букву на новую...

Заполнить RecyclerView из Cursor - Программирование Android
Ребят подскажите плз, есть ли способы закинуть данные с бд типа Cursor в список ResyclerView? Или нужно обязательно переводить данные в...


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

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

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