Ура почти разобрался))) правда через пятую точку)))
Приходится делать еще один коннект через стандартный интерфейс поставляемый postgres(((
Как подцепится через QSqlDatabase пока не знаю. Может кто подскажет.....
Вообщем после долгого капания в нете нашел одну ссылку
http://archives.postgresql.org/pgsql-general/2003-03/msg00989.phpгде находится полная реализация!!!
Мучает один вопрос - почему это не реализовано в QT???Мне в принципе понадобилась только одна функция - немного подкорректировал и вот ....
#include <libpq-fe.h>
#include <pgsql/libpq/libpq-fs.h>
. . .
QByteArray picWidget::readBlob(int oid)
{
PGconn *db;
PGresult *res;
db = PQconnectdb("host=localhost port=5432 dbname=mydb user=name_user password=pass");
if(PQstatus(db) != CONNECTION_OK)
QMessageBox::warning(this, QObject::tr("Невозможно открыть БАЗУ ДАННЫХ"), QObject::tr("???"));
QByteArray ba;
res = PQexec(db, "begin");
PQclear(res);
int fd = lo_open(db, oid, INV_READ);
if (fd < 0)
{
qWarning( "QPGSQLResult::readBlob: unable to open large object for read" );
return ba;
}
int size = 0;
int retval = lo_lseek(db, fd, 0L, SEEK_END);
if (retval >= 0)
{
size = lo_tell(db, fd);
lo_lseek(db, fd, 0L, SEEK_SET);
}
if (size == 0)
{
lo_close(db, fd);
return ba;
}
char *buf = new char[size];
retval = lo_read(db, fd, buf, size);
if (retval < 0)
{
qWarning( "QPGSQLDriver::readBlob: unable to read large object" );
}
else
{
ba = QByteArray(buf, size);
}
delete [] buf;
lo_close(db, fd);
res = PQexec(db, "end");
PQclear(res);
PQfinish(db);
return ba;
}
... оно работает!!!!