On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 4890
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.05.16 14:39. Заголовок: MiniGui + PostgreSQL


Кому будет интересно.
https://habrahabr.ru/post/282764/

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 133 , стр: 1 2 3 4 5 6 7 All [только новые]


постоянный участник




Пост N: 5327
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.03.17 20:25. Заголовок: Петр пишет: все фун..


Петр пишет:

 цитата:
все функции проверять на код возврата, по возможности применять async api



Подскажи пожалуйста как это сделать правильно ?
А то сомневаюсь я что сделаю правильно.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1431
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 19.03.17 11:58. Заголовок: Andrey пишет: Подск..


Andrey пишет:

 цитата:
Подскажи пожалуйста как это сделать правильно ?
А то сомневаюсь я что сделаю правильно.


Во-первых извините за задержку с ответом, не всегда есть время отвечать.
Во-вторых, чего непонятного я написал?

Каждая функция возвращает результат и желательно (а иногда и просто необходимо) его проверить на допустимость перед тем как передавать на обработку в другую функцию.
В случае связки клиент-сервер такую проверку нужно проводить всегда, если не хотите терять данные.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост 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 ) )

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост 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 ) );
}


напишите разработчикам (Виктору)



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5328
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.03.17 16:28. Заголовок: Петр СПАСИБО БОЛЬШОЕ..


Петр СПАСИБО БОЛЬШОЕ !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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 ......

Странная ошибка очень...
И только у одного клиента.
И почему вешается программа после отправки (или во время следующей отправки) ?




Спасибо: 0 
ПрофильЦитата Ответить



Пост 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 нашел.
Кто этот квест уже проходил, напишите, где их брать. Если у вас есть, может вышлете?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6974
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.11.18 00:07. Заголовок: rvu пишет: Кто этот..


rvu пишет:

 цитата:
Кто этот квест уже проходил, напишите, где их брать


Это к Андрею , главное что бы он не забыл что делал ....

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 148
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 30.11.18 15:31. Заголовок: Dima пишет: Это к А..


Dima пишет:

 цитата:
Это к Андрею , главное что бы он не забыл что делал ....



Если делает, dll у него, наверное, есть.
Только зашел бы он в эту тему...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6136
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.11.18 19:58. Заголовок: Dima пишет: Это к А..


Dima пишет:

 цитата:
Это к Андрею , главное что бы он не забыл что делал ....


Специально сделал готовые примеры, которых нет у Григория.
https://abonent4.ru/minigui/

Смотреть - Пример работы с объектом Tsbrowse и конвертирование dbf в PostgresSQL и обратно в dbf

У меня в задаче включена работа с PostgresSQL (база в инете на сайте) и LetoDB (сервер тоже в инете).
Отличные продукты.

Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 149
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 05.12.18 14:29. Заголовок: Andrey пишет: Специ..


Andrey пишет:

 цитата:
Специально сделал готовые примеры, которых нет у Григория.



Твой пример удалось запустить, потребовалось только отыскать файл ssleay32.dll.
А вот вышеуказанный пример из Минигуи так и не пошел. Видимо, не подходят ему эти dll. Где их брать?
Но пока есть с чем разбираться. Спасибо!

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1418
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.12.18 15:24. Заголовок: rvu пишет: А вот вы..


rvu пишет:

 цитата:
А вот вышеуказанный пример из Минигуи так и не пошел. Видимо, не подходят ему эти dll. Где их брать?


http://clipper.borda.ru/?1-4-1544012562201-00000950-000-10001-0#002.001
и прочитать несколько постов ниже

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6982
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.12.18 16:10. Заголовок: Haz пишет: и прочит..


Haz пишет:

 цитата:
и прочитать несколько постов ниже


или тут https://indy.fulgan.com/SSL/
или самостоятельно погуглить

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 133 , стр: 1 2 3 4 5 6 7 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 600
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет