Seite 1 von 1

QSqlQuery und postgreSQL

Verfasst: 15. Februar 2010 22:39
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?

Verfasst: 15. Februar 2010 23:03
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 :)

Verfasst: 16. Februar 2010 09:33
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.
???

Verfasst: 16. Februar 2010 12:29
von upsala
Unterstützt Postgres Prepared Statments bei CREATE?