Форум » Для флейма » MiniGui + PostgreSQL » Ответить

MiniGui + PostgreSQL

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

Ответов - 126, стр: 1 2 3 4 5 6 7 All

Andrey: Всем привет ! Кто то работает на МиниГуи с PostgreSQL ? Поделитесь опытом...

Dima: Andrey пишет: Кто то работает на МиниГуи с PostgreSQL ? Погугли... http://www.pctoledo.com.br/forum/viewtopic.php?f=45&t=14457

SergKis: Andrey пишет:Поделитесь опытом.. Примеры из contrib\hbpgsql\tests\*.* ты уже попробовал и классы (tpostgre.prg) для работы изучил ?

Andrey: SergKis пишет: Примеры из contrib\hbpgsql\tests\*.* ты уже попробовал и классы (tpostgre.prg) для работы изучил ? Примеры попробовал, работают. Классы пока изучаю...

Andrey: Сделал пример, работает.... Если база в инете и провайдер мудрит с портами, то пример на МиниГуи после сообщения об ошибке - вешается... И причем к базе очень долгоооо коннектится.... Можно ли как то проверить доступнось IP-адреса по определённому порту ? LetoDb отвечает корректно и быстрей ! Нет коннекта и всё тут !

Dima: Andrey Попробуй hb_inetConnect( cAddress, nPort )

Andrey: Dima пишет: Попробуй hb_inetConnect( cAddress, nPort ) xVal := hb_inetConnect( "хх.хх.хх.хх", 5432 ) MsgDebug( xVal ) Выдаёт такое сообщение:

Dima: [pre2] lResult := hb_inetInit() Инициализирует INET подсистему, возвращает .T. в случае успеха. Должна вызываться перед вызовами других INET функций ( в начале программы, например ). hb_inetCleanup() Освобождает ресурсы, занятые INET подсистемой. Ее надо вызывать в конце программы, использующей INET функции. [/pre2]

Andrey: Не помогло... lResult := hb_inetInit() -> .T. далее возвращает результат <pointer> ....

Dima: Примерно так [pre2] if hb_inetInit() hSocket := hb_inetCreate(2500) hb_inetConnectIP( "192.168.0.200",13,hSocket ) if hb_inetErrorCode( hSocket )==0 ret:=.t. else ret:=.f. endif hb_inetCleanup() endif [/pre2]

Andrey: Dima пишет: Примерно так Заработало ! Но опять возврат дурацкий... MsgDebug( hSocket , hb_inetErrorCode( hSocket ), ret ) <pointer>, -1, .f. Срабатывает через 2,5 сек. А если брать стандартный коннект: oServer := TPQServer():New(cHost, cDatabase, cUser, cPass,,schema) то ответ приходит через 25 сек. Спасибо БОЛЬШОЕ ДИМА !

PSP: Andrey пишет: Заработало ! Но опять возврат дурацкий... MsgDebug( hSocket , hb_inetErrorCode( hSocket ), ret ) <pointer>, -1, .f. Что дурацкого в нем?

Dima: Andrey пишет: Срабатывает через 2,5 сек. Dima пишет: hSocket := hb_inetCreate(2500) Ни о чем не говорит ? Поиграй с цифрой и добейся нормального коннекта. Цифра экспериментальная и я ее подбирал руками для LAN что работает через инет. Andrey пишет: А если брать стандартный коннект: oServer := TPQServer():New(cHost, cDatabase, cUser, cPass,,schema) Возможно в нем где то настраивается таймаут , надо смотреть. Andrey пишет: А если брать стандартный коннект: Его и надо юзать а не куй знает что Это тоже самое что пытаться проверить коннект к LETODB (или ADS) такой же методой с таймаутом в 1 секунду и потом удивляться полученному результату.

Andrey: PSP пишет: Что дурацкого в нем? MsgDebug( hSocket , hb_inetErrorCode( hSocket ), lResult ) hSocket возвращает <pointer> Что это такое ? Dima пишет: Его и надо юзать Понял.

Dima: Andrey пишет: Что это такое ? Смотри доку Александра Кресина , там все доступно описано. Andrey пишет: hSocket возвращает <pointer> Так и должно быть А ты ждал чего ?

PSP: Andrey, pointer - это указатель.

Andrey: PSP пишет: Andrey, pointer - это указатель.

Петр: Пользуясь свободной минутой и прости из любопытства скачал Postgre. Впечатления такие (о hbpgsql) SergKis пишет: классы (tpostgre.prg) для работы изучил ? Для роботы метод New класса TPQserver нуждается в допиливании. Хотя бы до такого вида New( cHost, cHostAddr, cDatabase, cUser, cPass, nPort, nTimeout, .. ) Andrey пишет: А если брать стандартный коннект: oServer := TPQServer():New(cHost, cDatabase, cUser, cPass,,schema) А почему порт не указываете явно ::New( cHost, cDatabase, cUser, cPass, nPort, Schema ) тогда б, возможно, не пришлось писать: Если база в инете и провайдер мудрит с портами, то пример на МиниГуи после сообщения об ошибке - вешается... И, на мой взгляд, стандартный коннект это PQconnectdb(conninfo). Как формировать строку conninfo можно почитать click here Хотелось бы обратить внимание Андрея на описании hostaddr Using hostaddr instead of host allows the application to avoid a host name look-up, which may be important in applications with time constraints. и connect_timeout Maximum wait for connection, in seconds (write as a decimal integer string). Zero or not specified means wait indefinitely. It is not recommended to use a timeout of less than 2 seconds. Почему-то в примерах везде используется только host (localhost), а connect_timeout вообще не используется. Из чего можно делать кое-какие предположения, но мы не будем :)

Andrey: Петр пишет: Для роботы метод New класса TPQserver нуждается в допиливании. Хотя бы до такого вида New( cHost, cHostAddr, cDatabase, cUser, cPass, nPort, nTimeout, .. ) Я обратил на это внимание. У себя сделал. А как это отразить изменение в классе для других ? Чтобы потом не тащить этот исправленный исходник к себе в проект. Петр пишет: А почему порт не указываете явно ::New( cHost, cDatabase, cUser, cPass, nPort, Schema ) Как было в примерах, так стал использовать у себя. И как добавить новую функцию для всех, чтобы сообщение об ошибках сервера приходило в кодировке RU1251 ? По умолчанию ошибки идут в кодировке UTF... Петр пишет: Как формировать строку conninfo можно почитать click here Спасибо БОЛЬШОЕ за наводку документации !

kia: Andrey пишет: Спасибо БОЛЬШОЕ за наводку документации ! Учитывая любовь Андрея к великому и могучему то тут все тоже самое на родном click here плюс есть еще сборки для виндовоза click here но под Linux сервером мороки значительно меньше



полная версия страницы