SQLiteException: рядом с "Ange": синтаксическая ошибка (код 1): - PullRequest
1 голос
/ 20 марта 2020

Я написал метод в классе DatabaseHelper, как показано ниже, он работает для коротких списков, но не для длинных списков, я получаю ошибку Caused by: android.database.sqlite.SQLiteException: near "Ange": syntax error (code 1): , while compiling: SELECT genre FROM second WHERE name='L'Ange-Gardien and Notre-Dame de la Salette Police, Fire and EMS' Я удаляю элемент L'Ange-Gardien и Notre-Dame de la Salette Police, Огонь и EMS, но все равно выдает ошибку.

    public String getScannerTypeByRadioName(String radioName) {
    String scannerType = null;
    myDataBase = this.getWritableDatabase();
    String query = "SELECT genre FROM second WHERE name='" + radioName + "'";
    Cursor c = myDataBase.rawQuery(query, null);
    while (c.moveToNext()) {
        scannerType = c.getString(c.getColumnIndex("genre"));
    }
    return scannerType;
}

1 Ответ

2 голосов
/ 20 марта 2020

Никогда не используйте конкатенацию параметров, которые вы хотите передать в операторе sql. В этой строке:

String query = "SELECT genre FROM second WHERE name='" + radioName + "'";

вы объединяете строку radioName со значением:

L'Ange-Gardien and Notre-Dame de la Salette Police, Fire and EMS

, которая содержит одиночную кавычку, и это создает недопустимый оператор sql. Используйте рекомендуемый способ с ? заполнителями:

String query = "SELECT genre FROM second WHERE name=?";
Cursor c = myDataBase.rawQuery(query, new String[] {radioName});
...