Ошибка при запросе курсора в базе данных sqlite - PullRequest
0 голосов
/ 30 декабря 2011

Я пытаюсь получить информацию о столбце от курсора и получаю разочаровывающую ошибку. Я хочу выбрать все столбцы, содержащие $ SEARCH. Вот код:

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

Не уверен, почему это происходит, возможно, в моем коде очень простая ошибка, но я не уверен, что это такое. Спасибо за вашу помощь!

1 Ответ

3 голосов
/ 30 декабря 2011

"name="+SEARCH станет name=CAP, что не является допустимым выражением SQL. Наивным решением является завершение термина в одинарные кавычки:

"name='" + SEARCH + "'"

Но это подвержено атакам SQL-инъекций Используйте средства передачи аргументов для передачи поискового термина без инъекций:

query("table", null, "name=?", new String[] {SEARCH}, null, null, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...