Como saber si conexion con mysql esta activa

1,608 views
Skip to first unread message

DIEGO PAEZ

unread,
Jul 17, 2017, 6:53:15 PM7/17/17
to Comunidad de Visual Foxpro en Español
Hola a todos, he visto varios temas en este grupo que tienen que ver con mi consulta, pero no he podido encontrar exactamente lo que quiero. Pido disculpas de antemano si es que esta y no lo he visto.
Tengo un sistema con conexion a mysql remoto.
Lo que me pasa es que despues de un tiempo sin usar el sistema, la conexion se cierra.
Especificamente lo que busco saber, es si existe algun comando, que me devuelva si determinada conexion esta activa o no.
Por ejemplo en mi cadena de conexion utilizo una varaible muy comun lnHandle, cuando realizo la conexion, pero si la conexion se cierra sola, mi variable sigue con el valor 1, asi que por ahi no puedo chequear, o al menos no se como hacerlo.
Tampoco me sirve el hecho de realizar la conexion hacer la consulta y cerrar la conexion, porque necesito hacer muchas consultas y mis bases estan en hosting, asi que la conexion demora mucho como para utilizar esa forma de programacion.
Espero haber sido claro, y si pueden ayudarme les agradezco desde ya.


Jean Pierre Adonis De La Cruz Garcia

unread,
Jul 17, 2017, 6:55:43 PM7/17/17
to Comunidad de Visual Foxpro en Español
Lo mas logico es hacer la consulta en tiempo real, una vez terminada la consulta cerrarla, y cuando se desea volver a consultar abrirla, consultar y cerrarla, es lo mas correcto, ya que no puedes realmente mantener una consulta siempre abierta.
en mi caso yo uso mejor automatizacion en PHP con Mysql, para las consultas debido a que hay hosting que no soportan el puerto 3306.

DIEGO PAEZ

unread,
Jul 17, 2017, 7:26:12 PM7/17/17
to Comunidad de Visual Foxpro en Español
Gracias por la respuesta, pero entonces en realidad no existe ningun comando que haga lo que quiero?

Hector R. De los Santos

unread,
Jul 18, 2017, 8:55:42 AM7/18/17
to publice...@googlegroups.com
Hola Diego, 
Lo que quieres hacer es una validación de la conexión, para eso puedes hacer una consulta de la fecha por ejemplo, con eso validas el resultado, si da error quiere decir que no estas conectado y tienes que volverte a conectar.
Te recomiendo que te armes una clase para manejar todo lo relativo a conexiones y ejecutar consultas SQL.

Saludos,

--
Hector R. De los Santos
Consultor TI
Blog: http://codigohds.com
Linux User #:320363

R&P SISTEMAS

unread,
Jul 18, 2017, 11:07:41 AM7/18/17
to publice...@googlegroups.com
Gracias Hector por la respuesta.
Lo que no entiendo es a que te refieres con hacer una consulta de la fecha? perdon la ignorancia, pero no entiendo.
Saludos y gracias,

Diego Paez

R&P Sistemas
Soca 416
(90000) Canelones,
Uruguay.
Tel. +598 4332 7046
Mov. + 598 99 105701
www.rpsistemas.com
Skype: rp.sistemas

Armando Rodríguez B.

unread,
Jul 18, 2017, 1:21:28 PM7/18/17
to publice...@googlegroups.com

Perdón por meter mi cuchara, yo utilizo estas funciones. La primera consulta un '1' de la base de datos. Si no hay conección se reconecta.

FUNCTION ChecaConDB
m.ResCon = SQLEXEC(m.lih,"select 1","csrNow")
IF m.Rescon = -1
    =ConectaDB()
ENDIF
RETURN

FUNCTION ConectaDB
m.lih = SQLSTRINGCONNECT(lCadCon)
IF m.lih < 0
    IF AERROR(laError) > 0
        lcMsg = ""
        FOR ln = 1 TO ALEN(laError,2)
          lcMsg = lcMsg + TRANSFORM(laError(1,ln)) + CHR(13)
        ENDFOR
        MESSAGEBOX(lcMsg, 16, "Error de ODBC")
    ENDIF
ENDIF
RETURN

R&P SISTEMAS

unread,
Jul 18, 2017, 1:44:48 PM7/18/17
to publice...@googlegroups.com
Hola Armando, gracias por la intervencion.
Pero si es lo que pensaba, por lo visto no hay ningun comando que sin tener que manadar  un select. 
Pense en mi ignorancia que habia algun comando que estuviese cheqeando constantemente la conexion.
Bueno gracias a todos, habra que conectar y desconectar y listo.



Diego Paez

R&P Sistemas
Soca 416
(90000) Canelones,
Uruguay.
Tel. +598 4332 7046
Mov. + 598 99 105701
www.rpsistemas.com
Skype: rp.sistemas

Andres Naranjo Robledo

unread,
Jul 18, 2017, 6:54:34 PM7/18/17
to Comunidad de Visual Foxpro en Español
Amigo ,yo e visto una forma , pero no saber si trabaja(funciona) en VFP9, lo.he visto en visual estudio , no tengo las letras(codigo) , pero.lo.puede.buscar en internet , de esta forma / conexión state , de es forma.busca en.internet , estoy en.duda pero si hay una forma de tener la.union(conexion) a MySQL que.siga unida.con.vfp9

R&P SISTEMAS

unread,
Jul 18, 2017, 10:49:25 PM7/18/17
to publice...@googlegroups.com
OK Mucha gracias, voy a buscar y comento

Diego Paez

R&P Sistemas
Soca 416
(90000) Canelones,
Uruguay.
Tel. +598 4332 7046
Mov. + 598 99 105701
www.rpsistemas.com
Skype: rp.sistemas

Antonio Meza

unread,
Jul 19, 2017, 10:33:08 AM7/19/17
to Comunidad de Visual Foxpro en Español
Si vas a realizar muchas consultas, entonces te conectas, realizas todas las consultas y te desconectas, no es necesario conectarte realizar una consulta y desconectarte por cada consulta, lo correcto es conectarse, realizar las consultas y desconectarte.

Lo que tienes que mejorar es en tus consultas, no te puedes traer un catalogo de clientes por ejemplo que tiene unos 50 registros para que el usuario al final de cuentas ni lo consulte, es decir si vas hacer una factura no debes mostrar un combo con el listado de 50 o mas clientes, para una red local esta perfecto pero para internet NO!!!. 

Un servidor de Google o Azure si quieres contratar el servicio de Base de Datos te cobra por uso, si mantienes una conexión permanente te va a salir muy caro, lo correcto es que te conectes realizas lo que necesitas y te desconectas, y sobre todo optimizar tus consultas.

Por cierto NO EXISTE un comando o propiedad que te indique el estado de la conexión usando VFP.

saludos
Antonio Meza



El lunes, 17 de julio de 2017, 17:53:15 (UTC-5), DIEGO PAEZ escribió:

mapner

unread,
Jul 19, 2017, 11:43:54 AM7/19/17
to Comunidad de Visual Foxpro en Español
Hola,

el pequeño truco es hacer un query a una tabla de 1 sola fila para verificar la validez de la conexión.

nRet = SQLExec(nMiConn,'select 1 from tinytable LIMIT 1','_test')
IF nRet < 1
  AERRORS(aE)
  MESSAGEBOX(aE[2])
ENDIF

* saludos

Andres Naranjo Robledo

unread,
Jul 19, 2017, 2:19:10 PM7/19/17
to Comunidad de Visual Foxpro en Español
Amigo estuve buscando y ecntontre esta forma , de conexión state que te había escrito, pero conexión.state sólo trabaja con OLEDB Y ADO , ADO Y OLEDB lo puedes usar con VFP9 , no trabaja con ODBC sqlpastrough ,si trabajas.con SQL OLEBD O MYOLEDB, o OLEDB de otra base de datos puedes trabajar con estas letras(codigo) que te dejo abajo:


Ado Clasico y OleDB


If Cnn.State = adStateOpen Then
Msgbox "La Conexion esta Abierta"
else
Msgbox "La Conexion No esta Abierta"
End

——————————————


Consulta la propiedad «State» del objeto «Connection»:

If Cnn.State = adStateOpen Then
MsgBox "Conexión abierta."
End If

If Cnn.State = adStateClosed Then
Cnn.Open()
End If

Si esta cerrado procede a abrir la conexion

No saber si te sirva , pasa bien



R&P SISTEMAS

unread,
Jul 19, 2017, 2:53:40 PM7/19/17
to publice...@googlegroups.com
Muchas gracias por toda la info

Diego Paez

R&P Sistemas
Soca 416
(90000) Canelones,
Uruguay.
Tel. +598 4332 7046
Mov. + 598 99 105701
www.rpsistemas.com
Skype: rp.sistemas

Reply all
Reply to author
Forward
0 new messages