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?
Qt4 PostgreSQL Blob-Support
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
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: