数据库中的C ++ Qt PgSQL自定义字符

时间:2013-03-17 11:11:11

标签: c++ database qt postgresql

我写了一个数据库更新程序。问题是 value 是QString,在某些情况下可能包括'。一定不能删除。 这是代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setPort(9999);
db.setDatabaseName("name");
db.setUserName("someone");
QSqlQuery q;
q = db.exec("UPDATE " + arr + " SET " + name + " = '" + value + "' WHERE question_id = "+ id);

任何想法?

2 个答案:

答案 0 :(得分:0)

您必须使用参数(或占位符):

QSqlQuery q = QSqlQuery(db);
q.prepare("UPDATE " + arr + " SET " + name + " = :name WHERE question_id = :id");
q.bindValue(":name", value);
q.bindValue(":id", id);
q.exec();

最好始终使用参数将任何值传递给查询。将值附加到查询字符串,受到sql注入攻击,并且可能并不总是有效(如在您的情况下)。

答案 1 :(得分:0)

'必须通过加倍来逃避。使用驱动程序执行此操作,如MD.Unicorn的答案所示。