Page 1 of 1
TDOLPHIN Conexion a Servidor MySQL
Posted: Mon Mar 02, 2015 12:30 pm
by rterraz
Hola Amigos...
Me gustaria que alguien que tenga experiencia en el uso de Tdolphin para conectar FWH con MySql me contestara esta pregunta...
Tengo un sistema que recibe consultas para una base MySql en forma permanente a traves de un Socket.
Cuando el sistema recibe cada peticion se conecta a database MySql a traves de TDOLPHIN y al terminar la consulta cierra la conexion con el servidor.
MI PREGUNTA: Es posible establecer la conexion con el servidor MySql al iniciar el programa y MANTENER ABIERTA ESTA CONEXION para ir evacuando las consultas sin tener que abrir y cerrar permanentemente la conexion y cerrarla solamente al terminar la ejecucion del programa ??????
Agradecere cualquier ayuda que puedan brindarme
MUchas gracias
Re: TDOLPHIN Conexion a Servidor MySQL
Posted: Mon Mar 02, 2015 12:49 pm
by pablovidal
Code: Select all
#include "inkey.ch"
#include "setcurs.ch"
#include "hbclass.ch"
#include "set.ch"
#include "box.ch"
Class tPoolSql
Data aConex Init {}
Data nPool Init 25
Data nMysql Init 0
Data nActivas Init 0
Data MyServer
Data MyUser
Data MyPass
Data MyPort
Data MyDBase
Method New()
Method Conexion()
Method Liberar( nPool ) INLINE ( ( ::aConex[ nPool ][ "activa" ] := .F. ), ( ::nActivas -- ) )
Method KeepAlive()
EndClass
Method New() Class tPoolSql
Local nTT := 1
::ReadIni()
::aConex := Array( ::nPool )
For nTT := 1 to ::nPool
@ 00,00 Say "Conexiones a la Base de datos " + AllTrim( cStr( nTT ) ) + "/" + AllTrim( cStr( ::nPool ) )
::aConex[ nTT ] := {=>}
::aConex[ nTT ][ "oMysql" ] := TDolphinSrv():New( ::MyServer, ::MyUser, ::MyPass, ::MyPort, ( 65536 + 131072 ), ::MyDBase )
::aConex[ nTT ][ "activa" ] := .F.
::aConex[ nTT ][ "nPool" ] := nTT
Next nTT
Return Self
Method Conexion Class tPoolSql
Local hPool
Local nTT := 0
While .T.
nTT++
If nTT > ::nPool
nTT := 1
EndIf
If !::aConex[ nTT ][ "activa" ]
::aConex[ nTT ][ "activa" ] := .T.
::nActivas ++
BEGIN SEQUENCE WITH {|| Break() }
::aConex[ nTT ][ "oMysql" ]:Ping()
RECOVER
::aConex[ nTT ][ "oMysql" ] := TDolphinSrv():New( ::MyServer, ::MyUser, ::MyPass, ::MyPort, ( 65536 + 131072 ), ::MyDBase )
END SEQUENCE
hPool := ::aConex[ nTT ]
Exit
EndIf
Enddo
Return( hPool )
Method KeepAlive() Class tPoolSql
Local hPool
Local nTT := 0
::lKeepAlive := .T.
For nTT := 1 to ::nPool
If !::aConex[ nTT ][ "activa" ]
::aConex[ nTT ][ "activa" ] := .T.
BEGIN SEQUENCE WITH {|| Break() }
::aConex[ nTT ][ "oMysql" ]:Query("select 1")
RECOVER
::aConex[ nTT ][ "oMysql" ] := TDolphinSrv():New( ::MyServer, ::MyUser, ::MyPass, ::MyPort, ( 65536 + 131072 ), ::MyDBase )
END SEQUENCE
::aConex[ nTT ][ "activa" ] := .F.
Inkey(0.01)
EndIf
Next nTT
::lKeepAlive := .F.
Return Nil
Re: TDOLPHIN Conexion a Servidor MySQL
Posted: Mon Mar 02, 2015 4:29 pm
by MGA
pablo, como usar esta classe?
Re: TDOLPHIN Conexion a Servidor MySQL
Posted: Mon Mar 02, 2015 7:35 pm
by pablovidal
Este es un Pequeño ejemplo,
esto esta diseñado para trabajar con multihilos y es parte
de un servicio para conexiones por sockets.
Code: Select all
Function Main()
Local oPoolSql := tPoolSql():New()
Local hMySql := oPoolSql:Conexion()
Local oMysql := hMysql["oMysql"]
...
oPoolSql:Liberar( hMysql["nPool"] )
Re: TDOLPHIN Conexion a Servidor MySQL
Posted: Mon Mar 02, 2015 7:55 pm
by MGA
Obrigado Pablo.