* contrib/hbpgsql/tests/tstpgrdd.prg
* contrib/hbpgsql/tests/async.prg
* contrib/hbpgsql/tests/test.prg
* contrib/hbpgsql/tests/cache.prg
* contrib/hbpgsql/tests/stress.prg
* contrib/hbpgsql/tests/dbf2pg.prg
! Various fixes.
! Formatting.
74 lines
1.6 KiB
Plaintext
74 lines
1.6 KiB
Plaintext
/*
|
|
* $Id$
|
|
*/
|
|
|
|
/*
|
|
* This sample show howto use asynchronous/nonblocking queries
|
|
*/
|
|
|
|
#include "inkey.ch"
|
|
|
|
FUNCTION Main( cServer, cDatabase, cUser, cPass )
|
|
LOCAL conn
|
|
|
|
CLEAR SCREEN
|
|
|
|
? "Connect", conn := PQConnect( cDatabase, cServer, cUser, cPass, 5432 )
|
|
|
|
? "Conection status", PQerrorMessage(conn), PQstatus(conn)
|
|
|
|
Query( conn, "SELECT codigo, descri FROM client limit 100", .F. )
|
|
Query( conn, "SELECT codigo, descri FROM fornec limit 100", .F. )
|
|
Query( conn, "SELECT pedido, vlrped FROM pedido", .T. )
|
|
|
|
conn := NIL
|
|
|
|
RETURN NIL
|
|
|
|
PROCEDURE Query( conn, cQuery, lCancel )
|
|
LOCAL pCancel, cErrMsg := Space( 30 )
|
|
LOCAL res, x, y, cTime
|
|
|
|
? "PQSendQuery", PQsendQuery( conn, cQuery )
|
|
|
|
cTime := Time()
|
|
CLEAR TYPEAHEAD
|
|
|
|
DO WHILE Inkey() != K_ESC
|
|
DevPos( Row(), 20 )
|
|
DevOut( "Processing: " + Elaptime( cTime, Time() ) )
|
|
|
|
Inkey( 1 )
|
|
|
|
IF lCancel
|
|
IF .T.
|
|
pCancel := PQgetCancel( conn )
|
|
? "Canceled: ", PQcancel( pCancel, @cErrMsg ), cErrMsg
|
|
pCancel := NIL
|
|
ELSE
|
|
? PQrequestCancel( conn ) /* Deprecated */
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF PQconsumeInput( conn )
|
|
IF ! PQisBusy( conn )
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
ENDDO
|
|
|
|
IF Inkey() != K_ESC
|
|
? "PQgetResult", hb_valtoexp( res := PQgetResult( conn ) )
|
|
|
|
FOR x := 1 TO PQlastrec( res )
|
|
?
|
|
FOR y := 1 TO PQfcount( res )
|
|
?? PQgetvalue( res, x, y ), " "
|
|
NEXT
|
|
NEXT
|
|
ELSE
|
|
? "Canceling Query", PQrequestCancel( conn )
|
|
ENDIF
|
|
|
|
RETURN
|