Я пытаюсь получить информацию о столбце с помощью курсора и получить разочаровывающую ошибку. Я хочу выделить все столбцы, содержащие $ SEARCH. Вот код:Ошибка в запросе курсора в базе данных sqlite
Bundle b = getIntent().getExtras();
SEARCH = b.getString("searchtext");
Cursor c = mDBHelper.getReadableDatabase().query("table", null, "name="+ SEARCH, null, null, null, null);
По какой-то причине курсор бросает исключение во время выполнения. здесь ошибка:
12-30 03:55:00.357: E/AndroidRuntime(1302): Caused by: android.database.sqlite.SQLiteException: near "CAP": syntax error: , while compiling: SELECT * FROM kroger WHERE name=john
Не знаю, почему это происходит, то, вероятно, очень простая ошибка в моем коде, но я не уверен, что это такое. Спасибо за вашу помощь!
отличное объяснение, спасибо! – benbeel
Почему первое предложение подвержено атаке, а не второе? – barry
@barry: скажите, что пользователь ищет 'CAP '; Таблица DROP TABLE; --'. С первым решением это станет следующим SQL: 'SELECT * FROM table, где name = 'CAP'; Таблица DROP TABLE; - ''. Во втором решении SQL остается 'SELECT * FROM table WHERE name =?', А '?' Привязан к фиктивному поисковому термину как строковое значение, семантически, а не синтаксически, поэтому поиск будет неудачным. –