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();
Nie działa. W międzyczasie, jeśli przepisuję zapytanie naQSqlQuery z przygotowaniem i bindValue dla nazwy kolumny Sqlite
query.exec("UPDATE table SET " + column + " = " + value.toString() + " WHERE id = " + QString::number(id));
to działa. Działa również, gdy usunę: symbol zastępczy kolumny i zapisz w kolumnie kolumny zapytania, na której testuję to. Tak więc wydaje się, że nie mogę używać bindValue i placeholder do nazw kolumn, przynajmniej z Sqlite. Ale nie znalazłem w żadnej dokumentacji o tym.
Więc nie ma sposobu, aby użyć bindValue i placeholder do nazw kolumn, lub czegoś brakuje?
Czy dokumentacja Qt lub inne dokumenty mówią o tym gdzieś? "Szukałem, ale nie znalazłem. – Littlebitter
Wartości wiążące nie są rzeczami Qt - to jest SQL. Możesz przeczytać o tym tutaj, na przykład: http://use-the-index-luke.com/sql/where-clause/bind-parameters. Cytat: "Parametry wiązania nie mogą zmienić struktury instrukcji SQL: Oznacza to, że nie można używać parametrów wiązania dla nazw tabel lub kolumn." – Amartel