Добрый день!
Смотрел пару дней на код драйвера. Оказалось, что он не возвращает коды ошибок postgresql.
Порылся в инете, нашел
http://www.dfndr.org.ua/qt4-qpsql-%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80-%D0%BA%D0%BE%D0%B4%D1%8B-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA.htmlНо там тоже коды возвращаются только в одном случае - только при выполнении команды.
Дополнил возврат кодов при выполнении всех действий.
Не получилось получить коды только непосредственно при коннекте.
d->connection = PQconnectdb(connectString.toLocal8Bit().constData());
PGresult* result = PQgetResult(d->connection);
PQgetResult не возвращает код при неудачном соединении.
Порылся в коде postresql ничего не нашел.
Может у кого-нибудь есть мысли, как получить код ошибки при подключении?
Если кому нужен исправленный драйвер выложу.
И еще так код postgresql переводится в число
bool ok;
const static int latin_base = 29;
errnum = QString::fromAscii(_sql_state).toInt(&ok,latin_base);
Может кто подскажет как грамотно из этого числа строку получить?
Вопрос снимается
qDebug() << QString::number(errnum, latin_base);
Еще косяк в драйвере обнаружил при возврате кодов ошибок- буду копать
Не косяк
Вроде работает
Это после prepare
----------------------------------
true
2898928
"42p01"
2
"ERROR: relation "management.usefrlog" does not exist
LINE 1: PREPARE qpsqlpstmt_1 AS insert into management.usefrlog (rec...
^
QPSQL: Unable to prepare statement"
"ERROR: relation "management.usefrlog" does not exist
LINE 1: PREPARE qpsqlpstmt_1 AS insert into management.usefrlog (rec...
^
"
"QPSQL: Unable to prepare statement"
----------------------------------
Это после exec
----------------------------------
true
2882949
"42601"
2
"ERROR: syntax error at or near "("
LINE 1: EXECUTE ('2012-9-7 10:14:32.945', 1, 'User start the cuttin...
^
QPSQL: Unable to create query"
"ERROR: syntax error at or near "("
LINE 1: EXECUTE ('2012-9-7 10:14:32.945', 1, 'User start the cuttin...
^
"
"QPSQL: Unable to create query"
----------------------------------