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 プレースホルダーを削除して、これをテストしているクエリ列名に書き込む場合にも機能します。したがって、少なくともSqliteでは、bindValueとプレースホルダーを列名に使用できないようです。しかし、これに関するドキュメントの言及は見つかりませんでした。
bindValue とプレースホルダーを列名に使用する方法はありませんか、それとも何か不足していますか?