[Lazarus] Postgres Cannot connect

Tom Russell tsrdatatech at gmail.com
Mon Nov 21 23:44:48 CET 2011


I tried placing my dylib file in the directory from which my app is
and it still does not find the file. There must be something simple i
am missing as I cannot figure out where the PQConnection is looking
for this file either.

On Mon, Nov 21, 2011 at 4:26 PM, Tom Russell <tsrdatatech at gmail.com> wrote:
> I am not sure what the issue is and why it cannot load the dylib it
> needs. Apparently it must be exposed to other items as they work. I
> would not think its this difficult to use postgres with lazarus.
>
> On Mon, Nov 21, 2011 at 3:36 PM, Tom Russell <tsrdatatech at gmail.com> wrote:
>> Its like this:
>>
>> Procedure InitialisePostgres3;
>>
>> begin
>>  inc(RefCount);
>>  if RefCount = 1 then
>>    begin
>>    Postgres3LibraryHandle := loadlibrary(pqlib);
>>    if Postgres3LibraryHandle = nilhandle then
>>      begin
>>      RefCount := 0;
>>      Raise EInOutError.Create('Can not load PosgreSQL client. Is it
>> installed? ('+pqlib+')');
>>      end;
>>
>>    pointer(PQconnectStart) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQconnectStart');
>>    pointer(PQconnectPoll) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQconnectPoll');
>>    pointer(PQconnectdb) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQconnectdb');
>>    pointer(PQsetdbLogin) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQsetdbLogin');
>>    pointer(PQfinish) := GetProcedureAddress(Postgres3LibraryHandle,'PQfinish');
>>    pointer(PQconndefaults) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQconndefaults');
>>    pointer(PQconninfoFree) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQconninfoFree');
>>    pointer(PQresetStart) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQresetStart');
>>    pointer(PQresetPoll) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQresetPoll');
>>    pointer(PQreset) := GetProcedureAddress(Postgres3LibraryHandle,'PQreset');
>>    pointer(PQrequestCancel) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQrequestCancel');
>>    pointer(PQdb) := GetProcedureAddress(Postgres3LibraryHandle,'PQdb');
>>    pointer(PQuser) := GetProcedureAddress(Postgres3LibraryHandle,'PQuser');
>>    pointer(PQpass) := GetProcedureAddress(Postgres3LibraryHandle,'PQpass');
>>    pointer(PQhost) := GetProcedureAddress(Postgres3LibraryHandle,'PQhost');
>>    pointer(PQport) := GetProcedureAddress(Postgres3LibraryHandle,'PQport');
>>    pointer(PQtty) := GetProcedureAddress(Postgres3LibraryHandle,'PQtty');
>>    pointer(PQoptions) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQoptions');
>>    pointer(PQstatus) := GetProcedureAddress(Postgres3LibraryHandle,'PQstatus');
>>    pointer(PQtransactionStatus) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQtransactionStatus');
>>    pointer(PQparameterStatus) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQparameterStatus');
>>    pointer(PQprotocolVersion) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQprotocolVersion');
>>    pointer(PQerrorMessage) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQerrorMessage');
>>    pointer(PQsocket) := GetProcedureAddress(Postgres3LibraryHandle,'PQsocket');
>>    pointer(PQbackendPID) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQbackendPID');
>>    pointer(PQclientEncoding) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQclientEncoding');
>>    pointer(PQsetClientEncoding) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQsetClientEncoding');
>> {$ifdef USE_SSL}
>>    pointer(PQgetssl) := GetProcedureAddress(Postgres3LibraryHandle,'PQgetssl');
>> {$endif}
>>    pointer(PQsetErrorVerbosity) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQsetErrorVerbosity');
>>    pointer(PQtrace) := GetProcedureAddress(Postgres3LibraryHandle,'PQtrace');
>>    pointer(PQuntrace) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQuntrace');
>>    pointer(PQsetNoticeReceiver) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQsetNoticeReceiver');
>>    pointer(PQsetNoticeProcessor) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQsetNoticeProcessor');
>>    pointer(PQexec) := GetProcedureAddress(Postgres3LibraryHandle,'PQexec');
>>    pointer(PQexecParams) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQexecParams');
>>    pointer(PQexecPrepared) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQexecPrepared');
>>    pointer(PQPrepare) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQprepare');
>>    pointer(PQsendQuery) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQsendQuery');
>>    pointer(PQsendQueryParams) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQsendQueryParams');
>>    pointer(PQsendQueryPrepared) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQsendQueryPrepared');
>>    pointer(PQgetResult) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQgetResult');
>>    pointer(PQisBusy) := GetProcedureAddress(Postgres3LibraryHandle,'PQisBusy');
>>    pointer(PQconsumeInput) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQconsumeInput');
>>    pointer(PQnotifies) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQnotifies');
>>    pointer(PQputCopyData) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQputCopyData');
>>    pointer(PQputCopyEnd) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQputCopyEnd');
>>    pointer(PQgetCopyData) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQgetCopyData');
>>    pointer(PQgetline) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQgetline');
>>    pointer(PQputline) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQputline');
>>    pointer(PQgetlineAsync) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQgetlineAsync');
>>    pointer(PQputnbytes) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQputnbytes');
>>    pointer(PQendcopy) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQendcopy');
>>    pointer(PQsetnonblocking) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQsetnonblocking');
>>    pointer(PQisnonblocking) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQisnonblocking');
>>    pointer(PQflush) := GetProcedureAddress(Postgres3LibraryHandle,'PQflush');
>>    pointer(PQfn) := GetProcedureAddress(Postgres3LibraryHandle,'PQfn');
>>    pointer(PQresultStatus) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQresultStatus');
>>    pointer(PQresStatus) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQresStatus');
>>    pointer(PQresultErrorMessage) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQresultErrorMessage');
>>    pointer(PQresultErrorField) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQresultErrorField');
>>    pointer(PQntuples) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQntuples');
>>    pointer(PQnfields) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQnfields');
>>    pointer(PQbinaryTuples) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQbinaryTuples');
>>    pointer(PQfname) := GetProcedureAddress(Postgres3LibraryHandle,'PQfname');
>>    pointer(PQfnumber) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQfnumber');
>>    pointer(PQftable) := GetProcedureAddress(Postgres3LibraryHandle,'PQftable');
>>    pointer(PQftablecol) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQftablecol');
>>    pointer(PQfformat) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQfformat');
>>    pointer(PQftype) := GetProcedureAddress(Postgres3LibraryHandle,'PQftype');
>>    pointer(PQfsize) := GetProcedureAddress(Postgres3LibraryHandle,'PQfsize');
>>    pointer(PQfmod) := GetProcedureAddress(Postgres3LibraryHandle,'PQfmod');
>>    pointer(PQcmdStatus) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQcmdStatus');
>>    pointer(PQoidStatus) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQoidStatus');
>>    pointer(PQoidValue) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQoidValue');
>>    pointer(PQcmdTuples) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQcmdTuples');
>>    pointer(PQgetvalue) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQgetvalue');
>>    pointer(PQgetlength) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQgetlength');
>>    pointer(PQgetisnull) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQgetisnull');
>>    pointer(PQclear) := GetProcedureAddress(Postgres3LibraryHandle,'PQclear');
>>    pointer(PQfreemem) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQfreemem');
>>    pointer(PQmakeEmptyPGresult) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQmakeEmptyPGresult');
>>    pointer(PQescapeString) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQescapeString');
>>    pointer(PQescapeBytea) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQescapeBytea');
>>    pointer(PQunescapeBytea) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQunescapeBytea');
>>    pointer(PQprint) := GetProcedureAddress(Postgres3LibraryHandle,'PQprint');
>>    pointer(PQdisplayTuples) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQdisplayTuples');
>>    pointer(PQprintTuples) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQprintTuples');
>>    pointer(lo_open) := GetProcedureAddress(Postgres3LibraryHandle,'lo_open');
>>    pointer(lo_close) := GetProcedureAddress(Postgres3LibraryHandle,'lo_close');
>>    pointer(lo_read) := GetProcedureAddress(Postgres3LibraryHandle,'lo_read');
>>    pointer(lo_write) := GetProcedureAddress(Postgres3LibraryHandle,'lo_write');
>>    pointer(lo_lseek) := GetProcedureAddress(Postgres3LibraryHandle,'lo_lseek');
>>    pointer(lo_creat) := GetProcedureAddress(Postgres3LibraryHandle,'lo_creat');
>>    pointer(lo_tell) := GetProcedureAddress(Postgres3LibraryHandle,'lo_tell');
>>    pointer(lo_unlink) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'lo_unlink');
>>    pointer(lo_import) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'lo_import');
>>    pointer(lo_export) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'lo_export');
>>    pointer(PQmblen) := GetProcedureAddress(Postgres3LibraryHandle,'PQmblen');
>>    pointer(PQenv2encoding) :=
>> GetProcedureAddress(Postgres3LibraryHandle,'PQenv2encoding');
>>
>>    InitialiseDllist;
>>    end;
>> end;
>>
>> On Mon, Nov 21, 2011 at 12:28 PM, Joost van der Sluis <joost at cnoc.nl> wrote:
>>> On Mon, 2011-11-21 at 12:13 -0500, Tom Russell wrote:
>>>> I tried adding the unti to my uses as well as the snippet you gave but
>>>> it says its the wrong number of parameters? I dont see where that even
>>>> accepts any really.
>>>>
>>>> Or Im confused?
>>>
>>> Could be due to the different fpc-version. Ctrl-click on it to find out
>>> how it is defined.
>>>
>>> Joost.
>>> --
>>> My Lazarus blog: http://www.lazarussupport.com/lazarus/weblog
>>>
>>>
>>> --
>>> _______________________________________________
>>> Lazarus mailing list
>>> Lazarus at lists.lazarus.freepascal.org
>>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
>>>
>>
>




More information about the Lazarus mailing list