Qt4 PostgreSQL Blob-Support

Alles rund um die Programmierung mit Qt
Antworten
Kai
Beiträge: 3
Registriert: 27. November 2005 13:12

Qt4 PostgreSQL Blob-Support

Beitrag von Kai »

Hallo,

ich habe Probleme mit dem Blob-Support von PostgreSQL mit Qt4. Binärdateien lassen sich zwar problemlos in ein bytea Feld speichern, die zurückgegebenen Dateien weisen eine identische Länge auf, differerieren aber in etlichen Bytes. Bei Textdateien ist alles OK. Mit Qt3 ist auch alles OK. Ich benutze Qt 3.4.3 und 4.0.1 unter Linux. PostgreSQL 7.4.3 und 8.0.1

Beispiel:

CREATE TABLE image (
image_id BIGINT NOT NULL
, image_data BYTEA NOT NULL
, PRIMARY KEY (image_id)
);


QFile in_file(argv[1]);
in_file.open(QIODevice::ReadOnly);
QByteArray b_in = in_file.readAll();
in_file.close();

QSqlQuery q;
q.prepare("TRUNCATE image;");
q.exec();

q.prepare("INSERT INTO image (image_id, image_data) VALUES(?, ?);");
q.bindValue(0, 1);
q.bindValue(1, b_in);
q.exec();

q.prepare("SELECT image_data FROM image WHERE image_id = 1;");
q.exec();
q.first();
QByteArray b_out = q.value(0).toByteArray();
QFile out_file("imagetest");
out_file.open(QIODevice::WriteOnly);
out_file.write(b_out);
out_file.flush();
out_file.close();

Gibt es eine Lösung?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

eventuell auch ein bug ähnlich wie in dem MySQL Treiber. Wo ich auch schon 2 Bugs gefunden habe.
Kai
Beiträge: 3
Registriert: 27. November 2005 13:12

Beitrag von Kai »

und es muss beim Auslesen der Daten über SELECT passieren. Wenn ich die Datei über das Qt4 Programm in die Datenbank hochlade, kann ich die Binärdatei über ein Qt3 Programm fehlerfrei auslesen. Die falschen Daten sind nur beim Auslesen über die Qt4-Routine vorhanden. Wo kann man denn da ansetzen? Lohnt es sich mal einen Qt4.1 Snapshot zu installieren?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

ich würdes es enfach mal versuchen und sonst einen bugreport verfassen
Kai
Beiträge: 3
Registriert: 27. November 2005 13:12

Beitrag von Kai »

Das Problem ist in 4.1rc1 gelöst
Antworten