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

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

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

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

15.07.2016, 16:44. Просмотров 157. Ответов 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
Получение данных с SimpleCursorAdapter Android
Получение данных из DialogFragment Android
Android Получение данных из другого класса
Получение данных по расписанию Android
Android RawQuery using cursor
ArraList or Cursor Android
Cursor Android
Android Cursor
Рэндомно забрать из cursor Android
Android Простое получение GPS данных
Получение данных с квадрокоптера Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2013 / 1755 / 545
Регистрация: 12.05.2014
Сообщений: 6,208
Завершенные тесты: 1
15.07.2016, 18:49     Получение данных из cursor #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);
        }
Yandex
Объявления
15.07.2016, 18:49     Получение данных из cursor
Ответ Создать тему
Опции темы

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