Получение значений с помощью предложения WHERE в таблице базы данных SQLite с использованием android

Я пытаюсь получить значение из столбца расстояния, где имя соответствует строке предоставления. См. Код ниже:

    public String getDistance(String station_name){
    String distance = null;
    Cursor cursor = database.rawQuery("SELECT distance from station_data where name =? ", new String[] {station_name} );
    cursor.moveToFirst();
    while(cursor.moveToNext()){
        distance = cursor.getString(0);
        cursor.moveToNext();
    }
    cursor.close();
    return distance;
}

Я использую внешний файл базы данных в папке ресурсов Android и использую почти ту же функцию для заполнения моего счетчика. Он отлично работает со счетчиком, но возвращает нулевое значение при использовании вышеуказанной функции. Это моя таблица:

Получение значений с помощью предложения WHERE в таблице базы данных SQLite с использованием android

Помогите разобраться в проблеме. Заранее спасибо.

что вы проходите как station_name?

Vladyslav Matviienko 13.09.2018 07:09

Строковое значение, см. Второй столбец в таблице. @VladyslavMatviienko

Mohd Shad Mirza 13.09.2018 07:11

Я понимаю это, но какое значение например?

Vladyslav Matviienko 13.09.2018 07:12

Допустим "Аламбаг" и я хочу вернуть 4.2 @VladyslavMatviienko

Mohd Shad Mirza 13.09.2018 07:14

И вы уверены, что запрашиваете именно Alambagh, полностью совпадающий со значением в таблице?

Vladyslav Matviienko 13.09.2018 07:16

station_name: "Alambagh" через отладчик. @VladyslavMatviienko

Mohd Shad Mirza 13.09.2018 07:23

Cursor cursor = database.rawQuery (DBSchema.DB_SELECT_ALL + "WHERE" + DBSchema.DB_ROW_ID + " = " + название_станции, null); если (курсор! = ноль) {если (cursor.moveToFirst ()) {делать {заголовок = cursor.getString (cursor.getColumnIndex (DBSchema.DB_TITLE)); } while (cursor.moveToNext ()); } cursor.close (); }

notTdar 13.09.2018 07:27
0
8
70
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

public String getDistance(String station_name){
String distance = null;
Cursor cursor = database.rawQuery("SELECT distance from station_data where name =? ", 
new String[] {station_name} );
if (cursor.length() > 0){
    cursor.moveToFirst();
    distance = cursor.getString(0);          
}
cursor.close();      
return distance;
Ответ принят как подходящий
    //Once try this. It will definitely work.


public String getDistance(String station_name){
            String distance = null;
            Cursor cursor = database.rawQuery("SELECT distance from station_data where name =? ", new String[] {station_name} );

            if (cursor.moveToFirst())
            {
                distance = cursor.getString(0);
            }      

            cursor.close();

            return distance;
        }

// Смотрите здесь, что не так в вашем коде.

// cursor.moveToFirst () для перемещения курсора к первому индексу курсора.

// cursor.moveToNext () для перемещения курсора на следующий индекс.

// Посмотрите, что вы здесь сделали.

public String getDistance(String station_name){
        String distance = null;
        Cursor cursor = database.rawQuery("SELECT distance from station_data where name =? ", new String[] {station_name} );
        cursor.moveToFirst();  // CURSOR INDEX = 0
        while(cursor.moveToNext()){ // CURSOR INDEX = 1
            distance = cursor.getString(0);
            cursor.moveToNext();
        }
        cursor.close();
        return distance;
    }

Возникла проблема с итерацией, которую я выполнял Рабочий код ниже:

    public String getDistance(String station_name){
    String distance = null;
    Cursor cursor = database.rawQuery("SELECT distance from station_data WHERE name =? ", new String[] {station_name} );
    cursor.moveToFirst();
    while(!cursor.isAfterLast()){
        distance = cursor.getString(0);
        cursor.moveToNext();
    }
    cursor.close();
    return distance;
}

Другие вопросы по теме