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

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

16.03.2013, 13:37. Просмотров 2156. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2013, 13:37
Ответы с готовыми решениями:

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

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

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

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

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

2
dubok79
325 / 123 / 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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2013, 18:38

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

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

Dx.bat выдает ошибку
При вызове: drStudio>call C:\Users\user\AppData\Local\Android\sdk\build-tools\23.0.1\dx.bat...


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

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

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