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();
Не работает. Между тем, если я переписал запрос наQSqlQuery with prepare and bindValue для имени столбца Sqlite
query.exec("UPDATE table SET " + column + " = " + value.toString() + " WHERE id = " + QString::number(id));
он работает. Он также работает, если я удаляю: column placeholder и записываю в имя столбца запроса, на котором я тестирую это. Похоже, что я не могу использовать bindValue и placeholders для имен столбцов, по крайней мере, с Sqlite. Но я не нашел ни одной документации об этом.
Так что нет возможности использовать bindValue и заполнители для имен столбцов, или я чего-то не хватает?
Описывает ли Qt документация или некоторые другие документы об этом где-то? «Потому что я искал, но не нашел .. – Littlebitter
Значения привязки - это не вещь Qt - это вещь SQL. Вы можете прочитать об этом здесь, например: http://use-the-index-luke.com/sql/where-clause/bind-parameters. Цитата: «Параметры привязки не могут изменить структуру оператора SQL. Это означает, что вы не можете использовать параметры привязки для имен таблиц или столбцов». – Amartel