Hi!
Ich habe folgendes Problem:
Qt scheint bei den bindings mit dem @-Symbol icht richtig umzugehen.
QString entry = "test@@test";
QString sql = "DELETE FROM table WHERE field = :entry";
QSqlQuery query(db);
query.prepare(sql);
query.bindValue(":entry", entry);
query.exec();
Bei dieser Variante wird der entsprechende Eintrag nicht aus der Db gelöscht.
Wenn ich allerdings folgendes probiere:
QString entry = "test@@test";
QString sql = QString("DELETE FROM table WHERE field = %1").arg(entry);
QSqlQuery query(db);
query.exec(sql);
läuft alles einwandfrei und der entsprechende Eintrag wird aus der DB gelöscht.
Eigentlich würde ich die bind-variante ja lieber nutzen, schon allein um SQL-Injections zu vermeiden.
Kennt einer von euch schon dieses Problem, bzw. hat einen Workaround dafür?
Vieleicht habe ich ja auch irgendeinen Fehler gemacht, ist ja auch nie so ganz auszuschließen.
Vieleicht sollte ich noch erwähnen: Datenbanktreiber ist QOCI.
Vielen Dank für eure Hilfe im Vorraus.
Probleme mit bind und QSqlQuery
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Kann ich nicht sagen, ich mache das nach einer anderen Syntax, da funktioniert das eigentlich immer:
Code: Alles auswählen
QString entry = "test@@test";
QString sql = "DELETE FROM table WHERE field=?";
QSqlQuery query(db);
query.prepare(sql);
query.bindValue(0, entry);
query.exec();