Russian Qt Forum
Ноябрь 23, 2024, 08:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Экранировка символов  (Прочитано 5404 раз)
phpCoder
Гость
« : Май 08, 2015, 11:41 »

Как в Qt заэкранировать строку текста для вставки в SQL-запрос? Наподобие изветной функции из PHP.
Всякие бинды не интересуют.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Май 08, 2015, 11:46 »

Как в Qt заэкранировать строку текста для вставки в SQL-запрос? Наподобие изветной функции из PHP.
Всякие бинды не интересуют.

Руками?

А чем такой способ не нравится? Непонимающий
Код
C++ (Qt)
   QSqlQuery query;
   query.prepare("update person set firstname = ? where id = ?");
   query.addBindValue(firstName);
   query.addBindValue(personId);
   return query.exec();
 

Код
C++ (Qt)
   QSqlQuery query;
   query.prepare("INSERT INTO person (id, forename, surname) "
                 "VALUES (:id, :forename, :surname)");
   query.bindValue(":id", 1001);
   query.bindValue(":forename", "Bart");
   query.bindValue(":surname", "Simpson");
   query.exec();
 
Записан

phpCoder
Гость
« Ответ #2 : Май 08, 2015, 11:51 »

Потому что есть функция mysql_real_escape_string, которая пишется в одну строку - это первое. Второе - запрос у меня меня собирается из разные мест программы и всякие бинды тут не помогут.

PS Ну не может же быть Qt таким ущербным, что даже функции для экранировки не имеет?
Записан
Bepec
Гость
« Ответ #3 : Май 08, 2015, 12:08 »

Эта функция имеется на всех форумах, думаю на этом форуме темка такая тоже есть.

PS так то экранирование для различных бд должно быть разное, не? Могу и ошибаться, но запрос допустим access'у будет экранироваться иначе, чем SQLite.

Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Май 09, 2015, 19:25 »

... запрос у меня меня собирается из разные мест программы и всякие бинды тут не помогут.
В этом и проблема, а не в отсутствии в Qt специальной функции.

Наведи порядок в коде и не собирай запросы вручную.
Записан

Юра.
carrygun
Гость
« Ответ #5 : Май 12, 2015, 05:37 »

PS так то экранирование для различных бд должно быть разное, не?

Именно, мне даже по работе приходится работать с такой БД, что в ней даже нет экранирования вообще. Экранировать руками это печально, мало ли что в строки попадет. Поэтому только бинд, не иначе.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.189 секунд. Запросов: 23.