0

我写了一个数据库更新程序。问题是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);

有任何想法吗?

4

2 回答 2

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 注入攻击,并且可能并不总是有效(如您的情况)。

于 2013-03-17T11:33:26.403 回答
0

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

于 2013-03-17T11:34:23.800 回答