【发布时间】:2013-03-31 22:29:49
【问题描述】:
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 和占位符,或者我遗漏了什么?
【问题讨论】: