QSqlQuery und postgreSQL

Alles rund um die Programmierung mit Qt
Antworten
katsumoto
Beiträge: 3
Registriert: 8. Februar 2007 14:00
Wohnort: remscheid
Kontaktdaten:

QSqlQuery und postgreSQL

Beitrag von katsumoto »

Hallo Community,

habe ein Problem mit der Tabellenerstellung und der DB postgreSQL. Es sollen 3 Tabellen in einem 'Rutsch' erstellt werden.

Code: Alles auswählen

  
QSqlQuery *query = new QSqlQuery("CREATE TABLE tbl_firma (id INT PRIMARY KEY, firma CHAR(80), strasse CHAR(80), plz CHAR(12), ort CHAR(80))");

query->prepare("CREATE TABLE tbl_employee (id INT PRIMARY KEY, id_firma INT, adress CHAR(80), prename CHAR(80), name CHAR(80))");
b = query->exec();

query->prepare("CREATE TABLE tbl_memo (id INT PRIMARY KEY, id_firma INT, date CHAR(12), memo CHAR(255))");
b = query->exec();

Aber es wird nur die erste Tabelle erstellt. Kommentiere ich den Code für die erste Tabelle aus und passe den Rest an, wird wieder nur die erste Tabelle erstellt.

Mit MySql kann ich die 3 Tabellen in einem 'Rutsch' erstellen.
Meine Umgebung: Debian 5.0; PostgreSQL 8.3.9; Qt 4.6.0 (von Nokia)

Wer weiss Rat?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QSqlQuery::prepare() und auch exec() haben einen Rückgabewert. Des weiteren gibt es QSqlQuery::lastError(). Das sollte erstmal zur Fehlersuche reichen.
Des weiteren gibt es keinen Grund das QSqlQuery per new zu erzeugen :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
katsumoto
Beiträge: 3
Registriert: 8. Februar 2007 14:00
Wohnort: remscheid
Kontaktdaten:

Beitrag von katsumoto »

Hallo,

erstmal danke für die schnelle Antwort.

Mein Code sieht jetzt folgendermaßen aus (Auszug):

Code: Alles auswählen

 QSqlQuery query("CREATE TABLE tbl_firma (id INT PRIMARY KEY, firma CHAR(80), strasse CHAR(80), plz CHAR(12), ort CHAR(80));");

  b = query.prepare("CREATE TABLE tbl_employee (id INT PRIMARY KEY, id_firma INT, adress CHAR(80), prename CHAR(80), name CHAR(80));");
  qDebug() << b;
  qDebug() << query.lastError();

Die Tabelle tbl_firma wird erzeugt, für die Tabelle tbl_employee erhalte ich folgende Debugausgabe:
false
QSqlError(-1, "QPSQL: Unable to prepare statement", "FEHLER: Syntaxfehler bei »CREATE«
LINE 1: PREPARE qpsqlpstmt_1 AS CREATE TABLE tbl_employee (id INT, i...
^
")
Mit dem FEHLER-Text kann ich gar nichts anfangen.
???
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Unterstützt Postgres Prepared Statments bei CREATE?
Antworten