void updateDB(const int id, const QString& column, const QVariant& value) const
//*****
//all stuff on open DB etc.
QSqlQuery query;
query.prepare("UPDATE table SET :column = :value WHERE id = :id ");
query.bindValue(":column", QVariant(column));
query.bindValue(":value", value);
query.bindValue(":id", id);
query.exec();
不行 . 同时如果我重写查询
query.exec("UPDATE table SET " + column + " = " + value.toString() + " WHERE id = " + QString::number(id));
有用 . 它也适用于我删除:列占位符并写入查询列名称,我正在测试它 . 所以我似乎不能将bindValue和占位符用于列名,至少使用Sqlite . 但我没有在任何文件中找到这一点 .
所以没有办法将bindValue和占位符用于列名,或者我错过了什么?
1 回答
这里的正确代码是:
绑定值,而不是字段名称 .
P.S . :在阅读整个问题之前回答 . 是的,你是对的 - 没有办法使用bindValues来绑定列,不仅适用于sqlite,还适用于每个数据库 .