It should be pointed out that it's also impossible to bind column names like so:
That's why the method is named addBindValue(). It isn't a general purpose "substitute anything for anything" method, it is specifically for binding variable values to VALUES() placeholders in a query.
If you need to specify things like table and column names at run time, then construct the prepare() statement as a QString:
QString queryStr
= QString( "INSERT INTO %1 (%2,%3) VALUES (?,?);" ).
arg( myTableName
).
arg( column1Name
).
arg( column2Name
);
query.prepare( queryStr );
query.addBindValue( "firstValue" );
query.addBindValue( "secondValue" );
query.exec();
QString myTableName = "MyTable";
QString column1Name = "columnOne";
QString column2Name = "columnTwo";
QString queryStr = QString( "INSERT INTO %1 (%2,%3) VALUES (?,?);" ).arg( myTableName ).arg( column1Name ).arg( column2Name );
QSqlQuery query;
query.prepare( queryStr );
query.addBindValue( "firstValue" );
query.addBindValue( "secondValue" );
query.exec();
To copy to clipboard, switch view to plain text mode
Bookmarks