Задать вопрос

Экранирование символов в QT?

Я пишу программу, которая работает с sqlite на QT 5.1. Только что с удивлением обнаружил, что вопреки документации, не происходит вообще никакого экранирования символов при подготовке запросов. То есть если случайно в тексте поставить запятую, кавычки или вообще подставить SQL код, QT никаким образом за этим не следит.


Пример кода для иллюстрации:
QSqlQuery injectTest(db);
QString test("asdasd, asd,' , ");
injectTest.prepare("UPDATE testtable SET text = :text WHERE id = 0");
injectTest.bindValue(":text", QVariant(test));
injectTest.exec();



При этом пытается выполниться следующий запрос (и естественно, он не может пройти):
UPDATE testtable SET text = asdasd, asd,' ,


В документации QT написано следующее: «Besides performance, one advantage of placeholders is that you can easily specify arbitrary values without having to worry about escaping special characters.»


В чём может быть дело? Я где-то лажаю, или это какой-то невероятный баг в QT?
  • Вопрос задан
  • 6128 просмотров
Подписаться 4 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 1
al_indigo
@al_indigo Автор вопроса
m08pvv: эскейп-последовательности он тоже не экранирует, я проверял. Так что вряд ли.

Подозревают, что я что-то делаю не так, потому что нагуглить на эту тему я ничего не смог
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы