Files
harbour-core/harbour/contrib/hbpgsql/tests/async.prg
Viktor Szakats 93d5b9b090 2010-03-07 20:31 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* 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.
2010-03-07 19:31:54 +00:00

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