Автор | Сообщение |
|
| постоянный участник
|
Пост N: 4890
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.05.16 14:39. Заголовок: MiniGui + PostgreSQL
|
|
|
Ответов - 133
, стр:
1
2
3
4
5
6
7
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 5327
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.03.17 20:25. Заголовок: Петр пишет: все фун..
Петр пишет: цитата: | все функции проверять на код возврата, по возможности применять async api |
| Подскажи пожалуйста как это сделать правильно ? А то сомневаюсь я что сделаю правильно.
|
|
|
|
| постоянный участник
|
Пост N: 1431
Зарегистрирован: 09.10.06
|
|
Отправлено: 19.03.17 11:58. Заголовок: Andrey пишет: Подск..
Andrey пишет: цитата: | Подскажи пожалуйста как это сделать правильно ? А то сомневаюсь я что сделаю правильно. |
| Во-первых извините за задержку с ответом, не всегда есть время отвечать. Во-вторых, чего непонятного я написал? Каждая функция возвращает результат и желательно (а иногда и просто необходимо) его проверить на допустимость перед тем как передавать на обработку в другую функцию. В случае связки клиент-сервер такую проверку нужно проводить всегда, если не хотите терять данные.
|
|
|
|
| постоянный участник
|
Пост N: 1432
Зарегистрирован: 09.10.06
|
|
Отправлено: 19.03.17 12:20. Заголовок: Andrey пишет: 1)re..
Andrey пишет: цитата: | 1)res := PQping( M->cPubPgConnInfo ) // проверка доступности сервера 2)IF res == PQPING_OK 3) PQexec( oServer:pDB, "BEGIN" ) // oServer:StartTransaction() 4) res := PQexec( oServer:pDB, cQuery ) 5) nResultStatus := PQresultStatus( res ) // строка 657 и т.д. |
| Вы же проверки делаете через раз и проверки делаете формально. В строке 1) проверка вроде есть, допустим сервер пингуется. Но в строке 3) перед вызовом PQexec состояние соединения (PQstatus) не определяется, после вызова состояние результата (PQresultStatus) игнорируется, состояние транзакции (PQTransactionStatus) игнорируется. В строке 5) проводится проверка, но она приводит к плачевным результатам (плачевным для существуюшей реализации, но относительно корректным вообще), потому, что игнорируется возможный результат возврата функции PQexec() и поведение функции PQresultStatus(). Корректная проверка должна выглядеть как-то так res := PQexec( oServer:pDB, cQuery ) if Empty( res ) nResultStatus := PGRES_FATAL_ERROR else nResultStatus := PQresultStatus( res ) endif или в более компактной версии nResultStatus := if( Empty( res ), PGRES_FATAL_ERROR, PQresultStatus( res ) )
|
|
|
|
| постоянный участник
|
Пост N: 1433
Зарегистрирован: 09.10.06
|
|
Отправлено: 19.03.17 12:35. Заголовок: Чтобы меньше букафф..
Чтобы меньше букафф писать и исходя из описания цитата: | The PQresultStatus function should be called to check the return value for any errors (including the value of a null pointer, in which case it will return PGRES_FATAL_ERROR). |
| функция HB_FUNC( PQRESULTSTATUS ) { PGresult * res = hb_PGresult_par( 1 ); if( res ) hb_retni( PQresultStatus( res ) ); else hb_errRT_BASE( EG_ARG, 2020, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } может быть реализована так HB_FUNC( PQRESULTSTATUS ) { PGresult * res = hb_PGresult_par( 1 ); hb_retni( PQresultStatus( res ) ); } напишите разработчикам (Виктору)
|
|
|
|
| постоянный участник
|
Пост N: 5328
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.03.17 16:28. Заголовок: Петр СПАСИБО БОЛЬШОЕ..
Петр СПАСИБО БОЛЬШОЕ !
|
|
|
|
| постоянный участник
|
Пост N: 5350
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.04.17 14:37. Заголовок: Переделал проверку. ..
Переделал проверку. Всё прекрасно работает у всех. Только у одного (у этого же клиента, про которого писал ранее) периодически вешается программа 3-4 раза в день. Ошибка отправки - вот лог: Результат: PGRES_FATAL_ERROR - сбой запроса Ошибка добавления строки: server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. Запрос, вызвавший ошибку: INSERT INTO ...... Странная ошибка очень... И только у одного клиента. И почему вешается программа после отправки (или во время следующей отправки) ?
|
|
|
|
| |
Пост N: 147
Зарегистрирован: 05.11.05
|
|
Отправлено: 29.11.18 20:43. Заголовок: До сегодняшнего дня ..
До сегодняшнего дня не имел дела с PostgreSQL, только название слышал. Нашел \MiniGUI\SAMPLES\BASIC\PostgreSQL\ Написано, что нужны dll PostgreSQL версии 8.4 На большинстве сайтов такой версии уже нет, но где-то нашел. Запускаю demo, говорит, нужен libpq.dll Скопировал его в папку с программой. Потом demo потребовало comerr32.dll krb5_32.dll libiconv-2.dll libintl-8.dll В PostgreSQL таких не оказалось (посмотрел новую версию 11.0 их там тоже нет). Где-то скачал. Теперь говорит: Порядковый номер 248 не найден в библиотеке DLL krb5_32.dll Подозреваю, что я какие-нибудь не те версии dll нашел. Кто этот квест уже проходил, напишите, где их брать. Если у вас есть, может вышлете?
|
|
|
|
| |
Пост N: 6974
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.11.18 00:07. Заголовок: rvu пишет: Кто этот..
rvu пишет: цитата: | Кто этот квест уже проходил, напишите, где их брать |
| Это к Андрею , главное что бы он не забыл что делал ....
|
|
|
|
| |
Пост N: 148
Зарегистрирован: 05.11.05
|
|
Отправлено: 30.11.18 15:31. Заголовок: Dima пишет: Это к А..
Dima пишет: цитата: | Это к Андрею , главное что бы он не забыл что делал .... |
| Если делает, dll у него, наверное, есть. Только зашел бы он в эту тему...
|
|
|
|
| постоянный участник
|
Пост N: 6136
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.11.18 19:58. Заголовок: Dima пишет: Это к А..
Dima пишет: цитата: | Это к Андрею , главное что бы он не забыл что делал .... |
| Специально сделал готовые примеры, которых нет у Григория. https://abonent4.ru/minigui/ Смотреть - Пример работы с объектом Tsbrowse и конвертирование dbf в PostgresSQL и обратно в dbf У меня в задаче включена работа с PostgresSQL (база в инете на сайте) и LetoDB (сервер тоже в инете). Отличные продукты.
|
|
|
|
| |
Пост N: 149
Зарегистрирован: 05.11.05
|
|
Отправлено: 05.12.18 14:29. Заголовок: Andrey пишет: Специ..
Andrey пишет: цитата: | Специально сделал готовые примеры, которых нет у Григория. |
| Твой пример удалось запустить, потребовалось только отыскать файл ssleay32.dll. А вот вышеуказанный пример из Минигуи так и не пошел. Видимо, не подходят ему эти dll. Где их брать? Но пока есть с чем разбираться. Спасибо!
|
|
|
|
|
| |
Пост N: 1418
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.12.18 15:24. Заголовок: rvu пишет: А вот вы..
|
|
|
|
| |
Пост N: 6982
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.12.18 16:10. Заголовок: Haz пишет: и прочит..
|
|
|
Ответов - 133
, стр:
1
2
3
4
5
6
7
All
[только новые]
|
|