Files
harbour-core/harbour/contrib/hbpgsql/tests/async.prg
Viktor Szakats bb31c97baa 2011-05-01 21:41 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbct/tests/datetime.prg
  * contrib/hbcurl/tests/ftp_uldl.prg
  * contrib/hbhttpd/tests/webapp.prg
  * contrib/hbpgsql/tests/simple.prg
  * contrib/hbpgsql/tests/async.prg
  * contrib/hbpgsql/tests/hdbctest.prg
  * contrib/hbpgsql/tests/cache.prg
  * contrib/hbsqlit3/tests/blob.prg
  * contrib/hbsqlit3/tests/hdbctest.prg
  * contrib/hbsqlit3/tests/hooks.prg
  * contrib/hbsqlit3/tests/authoriz.prg
  * contrib/hbsqlit3/tests/backup.prg
  * contrib/hbfbird/tests/simple.prg
  * contrib/hbfbird/tests/test.prg
  * contrib/hbfbird/tests/stress.prg
  * contrib/hbgd/tests/bartest.prg
  * contrib/hbgd/tests/barms.prg
    * FUNCTION main() -> PROCEDURE main()
    ! fixed RETURN <x> in main() to ErrorLevel() call
    ! fixed <> operator for strings
    * formatting
    * deleted some decoration comments
2011-05-01 19:44:30 +00:00

72 lines
1.6 KiB
Plaintext

/*
* $Id$
*/
/*
* This sample show howto use asynchronous/nonblocking queries
*/
#include "inkey.ch"
PROCEDURE Main( cServer, cDatabase, cUser, cPass )
LOCAL conn
CLEAR SCREEN
? "Connect", conn := PQconnectDB( "dbname = " + cDatabase + " host = " + cServer + " user = " + cUser + " password = " + cPass + " port = 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. )
RETURN
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