我写了一个数据库更新程序。问题是 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);
任何想法?
答案 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的答案所示。