Исключение при выполнении запроса Sqlite! - PullRequest
0 голосов
/ 19 июля 2011

Это ошибка, которую я получаю:

 **ERROR/Database(13775): Failure 1 (near "s": syntax error)**

, пока я пытаюсь выполнить следующий запрос:

myDB.execSQL("INSERT INTO " + tableName + " (" + column[1] + "," + column[2] + "," + column[3] + "," + column[4] + ","
                                + column[5] + "," + column[6] + "," + column[7] + "," + column[8] + ",type ) VALUES('" + url + "','" + title + "','" + summary + "','" + imageUrl + "','" + completeStoryUrl + "','" + date + "','" + imageString + "','" + body + "','" + type + "')");

Эти значения сохраняются в БД путем анализа XML-файла с RSSкормит как объекты.несколько предметов хранятся, но на некоторых я получаю это исключение.Есть ли проблема запроса данных, отправляемых в запрос .. ???Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 19 июля 2011

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

В Java есть, например, класс java.sql.PreparedStatement.

Использование такого обычного метода также должно исправить вашу синтаксическую ошибку.

0 голосов
/ 19 июля 2011

Не видя фактического выполняемого запроса, я бы предположил, что одно из вставляемых полей содержит символ ", который нарушает оператор SQL.

Например, представьте, если значение summary было

This string need"s to be escaped 

Как сказал Михалис, вам нужно экранировать вставляемые значения (заменить любые специальные символы)

На вашем месте я бы регистрировал фактический строковый запрос, который выполняется.Затем посмотрите на logcat, и вы поймете, почему он не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...