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();
Non funziona. Nel frattempo se riscrivo la query aQSqlQuery con prepare e bindValue per il nome della colonna Sqlite
query.exec("UPDATE table SET " + column + " = " + value.toString() + " WHERE id = " + QString::number(id));
funziona. Funziona anche se cancello: segnaposto di colonna e scrivi nel nome della colonna della query, su cui sto testando questo. Quindi sembra che non possa usare bindValue e segnaposto per i nomi di colonne, almeno con Sqlite. Ma non ho trovato alcuna documentazione che menzionasse questo.
Quindi non c'è modo di usare bindValue e segnaposto per i nomi di colonne, o mi manca qualcosa?
La documentazione Qt o altri documenti dicono da qualche parte su questo? 'cos ho cercato ma non ho trovato .. – Littlebitter
valori di binding non è una cosa di Qt - è cosa SQL. Puoi leggere qui, ad esempio: http://use-the-index-luke.com/sql/where-clause/bind-parameters. Citazione: "I parametri di bind non possono modificare la struttura di un'istruzione SQL Ciò significa che non è possibile utilizzare i parametri di bind per i nomi di tabella o colonna." – Amartel