Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
di109
2 / 2 / 2
Регистрация: 01.04.2012
Сообщений: 110
1

Cursor c = db.rawQuery - выдает ошибку

16.03.2013, 13:37. Просмотров 1899. Ответов 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"));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2013, 13:37
Ответы с готовыми решениями:

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

Не работает rawquery
Приветствую, Вызываю вот такую функцию: public double getCatByDate(long...

Не работает запрос через rawQuery
Имеется код, String arg1=Integer.toString(lang); - String...

Почему выдает ошибку?
Почему выдает ошибку? вот

Эмулятор выдает ошибку
Изучаю программирование под android. Написал HelloWorld все нормально. Делаю...

2
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
16.03.2013, 15:03 2
Если у вас запрос ничего не вернет, то будет ошибка в c.moveToFirst();
Используйте try catch или проверяйте количество возвращенных записей запросом.
1
c4sp3r
0x5B4C322291BD52AE
94 / 94 / 0
Регистрация: 04.03.2013
Сообщений: 295
16.03.2013, 18:38 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();
}
...
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2013, 18:38

Фонарик выдает ошибку
Всем привет! Делаю фонарик: package com.goodapps.flashlight; import...

Eclipse выдает ошибку
Emulator] PANIC: Could not open AVD config file:...

Firebase выдает ошибку!
Всем привет, озадачился написанием чата на firebase для общего развития и...


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

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

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