QSqlQuery: SQL-UPDATE funktioniert nicht, mit addBindValue()

Alles rund um die Programmierung mit Qt
Antworten
FrankK
Beiträge: 2
Registriert: 14. Mai 2008 14:56

QSqlQuery: SQL-UPDATE funktioniert nicht, mit addBindValue()

Beitrag von FrankK »

Hallo,

ich habe folgendes Problem:
Folgender Code funktioniert nicht. QSqlQuery gibt auch keinen Fehler zurück. Keine Änderung der Daten in der Datenbank.

Code: Alles auswählen

QSqlQuery *pQuery = new QSqlQuery(DataBase);
pQuery->prepare("UPDATE tablename SET NAME = ? , VORNAME = ? WHERE NUMMER = ? ");
pQuery->addBindValue("Mustermann");
pQuery->addBindValue("Hans");
pQuery->addBindValue("123456");
pQuery->exec()
Die Abfrage mittels boundValue() gibt mir auch die obigen Werte zurück.

Folgender Code funktioniert allerdings fehlerfrei. Die Daten werden wie erwartet geändert.

Code: Alles auswählen

QSqlQuery *pQuery = new QSqlQuery(DataBase);
pQuery->prepare("UPDATE tablename SET NAME = ? , VORNAME = ? WHERE NUMMER = \'123456\' ");
pQuery->addBindValue("Mustermann");
pQuery->addBindValue("Hans");
pQuery->exec()
Umgebung: Oracle10g, QT4.4, MS-VC2005

Fragenden Gruss
Frank
Maxubuntu
Beiträge: 20
Registriert: 18. April 2007 19:46
Wohnort: Flensburg
Kontaktdaten:

Beitrag von Maxubuntu »

Hi ...

addBindValue() funktioniert nicht mit der WHERE-Klausel, sondern nur für die Daten in der Datenbank.

Gruß,

Maxubuntu
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

@Maxubuntu: Wie kommst du auf die Idee?

Was sagt eigentlich QSqlQuery::executedQuery() oder das Datenbank-Logfile?
Maxubuntu
Beiträge: 20
Registriert: 18. April 2007 19:46
Wohnort: Flensburg
Kontaktdaten:

Beitrag von Maxubuntu »

Ich komme auf die Idee, weil ich auch schon mal mit WHERE = ? arbeiten wollte und das nicht funktioniert hat.

Der ausgeführte Query war dann beispielsweise

Code: Alles auswählen

UPDATE blah SET poof = 'splash' WHERE gasp = ?
Desweiteren ist in der Doku auch nur der Einsatz mit Werten zu sehen.

Gute Nacht!
FrankK
Beiträge: 2
Registriert: 14. Mai 2008 14:56

Beitrag von FrankK »

Hallo,

schon mal gut zu wissen, dass ich nicht der Einzige mit dem Problem bin/war.

Nachteilig ist natürlich, dass dieses Verhalten nicht dem Standard entspricht. Da stellt sich mir dann natürlich gleich die Frage, was ist mit allen anderen Möglichkeite der QSqlQuery Klasse? Laut Doku sind das SELECT, INSERT, UPDATE und DELETE. Gibt es dort ähnliche Erfahrungen?

Um aber noch auf die Frage zu Antworten, was executedQuery() zurückliefert

Code: Alles auswählen

UPDATE tablename SET NAME = :f , VORNAME = :fb WHERE NUMMER = :fc 
Gruß
Frank
Antworten