ich versuche nun seit heute Morgen mein Programm ein wenig schneller zu bekommen und wollte nun QSqlQuery::execBatch() verwenden.
Ein kleiner Test veranschaulicht meine Vorgehensweise.
Code: Alles auswählen
QVarianList tables, columns, values;
tables << "tab1" << "tab2";
columns << "col11, col12, col13" << "col21, col22, col23";
values << "11, 'value12', 'value13'" << "21, 22, 'value23'";
QSqlQuery q;
q.prepare("INSERT INTO ? (?) VALUES (?)");
q.addBindValue(tables);
q.addBindValue(columns);
q.addBindValue(values);
if (q.execBatch())
{
qDebug(q.lastError().databaseText().toAscii());
}Führe ich die Abfrage nun aus, erscheint folgende Fehlermeldung im Debugger:
Es werden also scheinbar eigenständig quotes den einzelnen Werten hinzugefügt, weshalb meine Abfrage auch falsch ist.You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''tab1' ('col11, col12, col13' at line 1
Richtig:
Und so scheint es zu seinINSERT INTO tab1 (col11, col12, col13) VALUES(11, 'value12', 'value13')
Kann ich execBatch nun überhaupt so verwenden, wie ich es vor habe, oder ist es für diesen Anwendungsfall nicht vorgesehen? Es müsste für mich die einfache Lösung geben, dass die automatische "Quotierung" weg gelassen wird.INSERT INTO 'tab1' ('col11, col12, col13') VALUES('11, 'value12', 'value13'')
Ich hoffe mir kann geholfen werden.
Gruß, KK