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
TDOLPHIN Conexion a Servidor MySQL
- pablovidal
- Posts: 398
- Joined: Thu Oct 06, 2005 10:15 pm
- Location: Republica Dominicana
- Contact:
Re: TDOLPHIN Conexion a Servidor MySQL
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
Saludos,
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
Re: TDOLPHIN Conexion a Servidor MySQL
pablo, como usar esta classe?
- pablovidal
- Posts: 398
- Joined: Thu Oct 06, 2005 10:15 pm
- Location: Republica Dominicana
- Contact:
Re: TDOLPHIN Conexion a Servidor MySQL
Este es un Pequeño ejemplo,
esto esta diseñado para trabajar con multihilos y es parte
de un servicio para conexiones por sockets.
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"] )
Saludos,
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
Re: TDOLPHIN Conexion a Servidor MySQL
Obrigado Pablo.