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));
有用。如果我删除 :column 占位符并写入我正在测试的查询列名,它也可以工作。所以似乎我不能对列名使用 bindValue 和占位符,至少在 Sqlite 中是这样。但是我在任何文档中都没有找到提到这一点。
所以没有办法对列名使用 bindValue 和占位符,或者我错过了什么?