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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
di109
2 / 2 / 0
Регистрация: 01.04.2012
Сообщений: 110
#1

Cursor c = db.rawQuery - выдает ошибку - Программирование Android

16.03.2013, 13:37. Просмотров 1560. Ответов 2
Метки нет (Все метки)

Есть таблица с датами, и есть SQL условие для получения даты. Если я в условие указываю дату которая есть в таблице код отрабатывает без ошибок и я получаю дату. Но если указываю дату которой нет в таблице приложение аварийно завершается! Почему так происходит где ошибка. Вообще я ожидал nuul или пусто. Если данный SQL запрос выполнить в Менеджере SQLite: получаю пусто если даты нет или дату если такая есть.

Может ошибка в этом: c.moveToFirst();

Код:
Java
1
2
3
4
5
6
7
8
        String table = "datadenominator2";
        String data = "16.03.2012";
 
        Cursor c = db.rawQuery("SELECT Date FROM "+table+"  WHERE Date = '"+data+"'", null);
        
        c.moveToFirst();
        
        String strData= c.getString(c.getColumnIndex("Date"));
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2013, 13:37     Cursor c = db.rawQuery - выдает ошибку
Посмотрите здесь:
Android RawQuery using cursor
Не работает rawquery Android
Android Не работает запрос через rawQuery
Фонарик выдает ошибку Android
Eclipse выдает ошибку Android
Почему выдает ошибку? Android
Android Эмулятор выдает ошибку
Dx.bat выдает ошибку Android
Android GoogleMap, getMap() выдает ошибку
При создании virtual device выдает ошибку Android
Кнопка при нажатии выдает ошибку. Как исправить? Android
Android Приложение выдает ошибку, если на устройстве отключен GPS

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
16.03.2013, 15:03     Cursor c = db.rawQuery - выдает ошибку #2
Если у вас запрос ничего не вернет, то будет ошибка в c.moveToFirst();
Используйте try catch или проверяйте количество возвращенных записей запросом.
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
16.03.2013, 18:38     Cursor c = db.rawQuery - выдает ошибку #3
Если у вас запрос ничего не вернет, то будет ошибка в c.moveToFirst();
c.moveToFirst() просто вернет false (в данном случае)!
getColumnIndex() вызывает CursorIndexOutOfBoundsException смотри в логах.

Можно сделать например так:

Java
1
2
3
4
5
6
7
...
if (cursor.moveToFirst()) {
       String strData= c.getString(c.getColumnIndex("Date");
} else {
      cursor.close();
}
...
Yandex
Объявления
16.03.2013, 18:38     Cursor c = db.rawQuery - выдает ошибку
Ответ Создать тему
Опции темы

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