Не могу получить значение из базы данных

215
28 февраля 2017, 15:49

Здравствуйте. Есть бд в которой лежат записи адресов сайтов, паролей и еще одной штуки. Нужно получить эту штуку если запись с адресом и паролем имеется. Если нет - получить пустую строку. Написал метод

public String getSave(String url, String key) {
    String[] columns = { Database.URL, Database.KEY, Database.SAVE};
    String selection = Database.URL + " =?" + " AND " + Database.KEY + " =?";
    String[] selectionArgs = { url, key };
    Cursor cursor = db.query("save", columns, selection, selectionArgs, null, null, null, "1");
    String save;
    if(!cursor.moveToFirst()){
        save = cursor.getString(cursor.getColumnIndex(Database.SAVE);
        cursor.close();
    }
    else save = "";
    return save;
}

Передаю в метод ссылку и пароль. Если записи с такими данными есть, то беру значение из Database.SAVE, если нет - пустая строка. Что не так то? Еще и лог странный

CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
Answer 1

У вас возвращается пустой курсор. При этом неправильно указано условие в if из-за чего код не соответствует описанию.

Cursor.moveToFirst возвращает false если данных нет. Ваш код в этом случае пытается получить значение.

Скорее всего, должно быть наоборот:

if(cursor.moveToFirst()) {
    save = cursor.getString(cursor.getColumnIndex(Database.SAVE);
} else {
    save = "";
}
READ ALSO
Ошибка p:ajax в composite component

Ошибка p:ajax в composite component

Добрый день! Делаю composite component на jsf с использованием primefacesМой компонент:

253
Ленивая загрузка объектов (Lazy loading) Java + Spring + JPA + Hibernate

Ленивая загрузка объектов (Lazy loading) Java + Spring + JPA + Hibernate

Нужно сделать ленивую загрузку для объектов, не вызывая orghibernate

407
Парсинг строки Java

Парсинг строки Java

Пример строки:

497
почему панель не выводится на экран

почему панель не выводится на экран

field должен быть добавлен в объект класса JWindow или JFrame, которому необходимо задать границы и включить видимостьСама по себе JPanel отрисовываться...

350