Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Экранирование - аналог addBindValue


Автор: Lindemann66 14.10.2011, 12:45
Всем привет!

Вопрос следующий

Работаю с БД (SQLite, Qt)

Хочу сделать универсальную функцию для выполнения операций insert
Примерный шаблон
Код

int DataBase::insert(QString tablename, QString columnnames, QString values) {
    //нужно как-то экранировать строку со значениями - values

    QSqlQuery query;
    query.prepare(QString("INSERT INTO %1 (%2) VALUES (%3)").arg(tablename).arg(columnnames).arg(values);

    //раньше экранирование делалось функцией addBindValue
    //query.addBindValue(value);

    query.exec();

    return query.lastInsertId().toInt();
}


Раньше, как следует из примера, экранирование осуществлялось за счёт функции addBindValue

Теперь, поскольку идёт подстановка за счёт arg, экранирование так сделать не получится

Вопрос - какие ещё есть функции аналоги addBindValue под мой случай?

Буду благодарен любому ответу!

Автор: newbee 14.10.2011, 12:57
addBindValue не экранирует в том смысле, как это делает пхп-шная mysql_real_escape_string. В sql есть специальный prepare-механизм, он и используется. Какой аналог нужен? Чтоб в одну строчку записывать или задача именно самому есейпить строки?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)