Russian Qt Forum
Ноябрь 23, 2024, 18:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: psql коды ошибок  (Прочитано 3789 раз)
GraninDm
Гость
« : Сентябрь 07, 2012, 08:46 »

Добрый день!

Смотрел пару дней на код драйвера. Оказалось, что он не возвращает коды ошибок 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"
----------------------------------
« Последнее редактирование: Сентябрь 07, 2012, 09:21 от GraninDm » Записан
trot
Гость
« Ответ #1 : Сентябрь 07, 2012, 09:54 »

А зачем этот код ошибки нужен, чтобы по коду получить текст ошибки, так он сразу и выдается.
Записан
GraninDm
Гость
« Ответ #2 : Сентябрь 07, 2012, 10:08 »

С кодами работать удобнее и правильнее.
Логика программы может изменяться в зависимости от кода ошибка.
А что хорошего в том, что код ошибки всегда равен -1?

В частности по ссылке написано зачем...
Мне лично нужно знать эти коды, после выполнения prepare и exec.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 20.