Desconexión a BD MySql

720 views
Skip to first unread message

Armando Rodríguez

unread,
Oct 12, 2010, 10:47:41 AM10/12/10
to publice...@googlegroups.com

Estimados colegas:

Estoy trabajando con VFP y MySql.  Me conecto a la base de datos al iniciar la aplicación y posteriormente hago las consultas y las actualizaciones.

El problema que a veces tengo es que se desconecta de la base de datos y no se como hacer para detectar esta situación antes de hacer un llamado mediante SQLEXEC(). Estuve haciendo unas pruebas con Conectar, consultar-actualizar, Desconectar.  Solo que como es MySql Remoto tarda algo de tiempo.

Hay alguna forma de saber si se está desconectado de la base de datos antes de correr una sentencia SQLEXEC() ?

 

Saludos y Gracias

Armando Rodríguez.

 

carlos SALCEDO

unread,
Oct 12, 2010, 11:00:14 AM10/12/10
to publice...@googlegroups.com
Hola Armando

Yo, ojo yo pregunto por la cadena conexion

la conexion se llama = mysqlconnect

antes de hacer movimientos contra el servidor
preguntas si mysqlconnect es mayor que 0 si lo es
prosigues si no mandas un mensajito de desconexion

Bendiciones

Carlos


From: armandor...@hotmail.com
To: publice...@googlegroups.com
Subject: [vfp] Desconexión a BD MySql
Date: Tue, 12 Oct 2010 09:47:41 -0500

ZeRoberto

unread,
Oct 12, 2010, 11:38:53 AM10/12/10
to publice...@googlegroups.com
Create una clase de conexion, internamente manejas el handle de conexion
 
miClase.Conectar("MIDSN")
miClase.SQL("SELECT * FROM Clientes", "Clientes")
miClase.Desconectar()
 
Saludos

Juan Bonilla

unread,
Oct 12, 2010, 12:04:21 PM10/12/10
to Comunidad de Visual Foxpro en Español
yo uso es mssql, pero el concepto es el mismo, creo una clase para
manejar la conexion, desconexion y envio de instrucciones al servidor.
antes de ejecutar el sqlexec (de mi aplicacion principal), verifico
ejecutando un sqlexec pidiendo la fecha al servidor, si vuelve el
cursor hay conexion y prosigue el programa, si no hay cursor, le
indico a mi metodo que reconecte.
un detalle mas, recuerda q en mi caso el numero del controlador de
conexion lo tengo en this.conexion, y el puede tener un valor de (1)
indicando q hay conexion pero aun asi puede estar desconectado. Por
eso verifico directamente si devuelve el cursor en vez de usar el
valor del controlador de conexion..
Lo anido en un bucle try, para q la exepcion no salte si el
controlador de conexion es invalido.
El parametro .F. q envio, es para q el sistema solo reconecte y no
inicialize otras cosas de mi app..


TRY
IF SQLEXEC(THIS.conexion,[select getdate()],"__exec")=-1
THIS.Conectar(.F.)
ENDIF
CATCH
THIS.Conectar(.F.)
FINALLY




On 12 oct, 09:47, Armando Rodríguez <armandorodrigu...@hotmail.com>
wrote:

Armando Rodríguez

unread,
Oct 12, 2010, 12:07:57 PM10/12/10
to publice...@googlegroups.com

Gracias Carlos y ZeRoberto.

 

Carlos, hice unas pruebas y aunque se pierda la conexión con la base de datos, la variable de la conexión no cambia de valor (1).  Entonces aunque haga la condición no lanza la reconexión.

 

ZeRoberto, lo que quiero evitar es conectar y desconectar cada vez que hago una consulta o actualización. Es una base de datos remota y tarda algunos segundos en conectar.

 

Alguna otra idea que puedan darme ?

 

Saludos

Armando Rodríguez

Armando Rodríguez

unread,
Oct 12, 2010, 12:36:44 PM10/12/10
to publice...@googlegroups.com
Gracias Juan.
Hice la consulta de la fecha del servidor con
m.ConsFecha=sqlexec(m.lih,"select now()","crsFecha"). Si mConsFecha = -1
reconecto.

Gracias a todos por sus aportes.
Armando Rodríguez


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Juan Bonilla
Enviado el: Martes, 12 de Octubre de 2010 11:04 a.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Desconexión a BD MySql

Hugo C.

unread,
Oct 12, 2010, 2:09:46 PM10/12/10
to Comunidad de Visual Foxpro en Español
Checa esta funcion :

SQLIDLEDISCONNECT( nStatementHandle )

http://www.foxcentral.net/microsoft/WhatsNewInVFP9_Chapter11.htm

Saludos.

On 12 oct, 08:47, Armando Rodríguez <armandorodrigu...@hotmail.com>
wrote:

Miguel Canchas

unread,
Oct 12, 2010, 4:08:25 PM10/12/10
to publice...@googlegroups.com
Pregunta si la variable existe, si existe verifica que tiene un valor mayor a 1, de lo contrario reconecta.
 
MK

Juan Bonilla

unread,
Oct 12, 2010, 5:10:11 PM10/12/10
to Comunidad de Visual Foxpro en Español
el problema es como dice armando, a mi tambien me paso, que hay
ocaciones en las que la conexion se cae sin embargo el controlador de
conexion sigue marcando 1, 2, etc, o sea sigue mostarndo q esta
conectado, por eso es mas facil hacer una consulta q ocupe pocos
recursos como el caso de la fecha del server, si esa pasa todo esta
bien, si falla hay q reconectar por el controlador pese a ser mayor de
0, es invalido...



On 12 oct, 15:08, "Miguel Canchas" <mcanc...@tracusape.com> wrote:
> Pregunta si la variable existe, si existe verifica que tiene un valor mayor a 1, de lo contrario reconecta.
>
> MK
>
>   ----- Original Message -----
>   From: Armando Rodríguez
>   To: publice...@googlegroups.com
>   Sent: Tuesday, October 12, 2010 11:07 AM
>   Subject: RE: [vfp] Desconexión a BD MySql
>
>   Gracias Carlos y ZeRoberto.
>
>   Carlos, hice unas pruebas y aunque se pierda la conexión con la base de datos, la variable de la conexión no cambia de valor (1).  Entonces aunque haga la condición no lanza la reconexión.
>
>   ZeRoberto, lo que quiero evitar es conectar y desconectar cada vez que hago una consulta o actualización. Es una base de datos remota y tarda algunos segundos en conectar.
>
>   Alguna otra idea que puedan darme ?
>
>   Saludos
>
>   Armando Rodríguez
>
>   De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de ZeRoberto
>   Enviado el: Martes, 12 de Octubre de 2010 10:39 a.m.
>   Para: publice...@googlegroups.com
>   Asunto: Re: [vfp] Desconexión a BD MySql
>
>   Create una clase de conexion, internamente manejas el handle de conexion
>
>   miClase.Conectar("MIDSN")
>
>   miClase.SQL("SELECT * FROM Clientes", "Clientes")
>
>   miClase.Desconectar()
>
>   Saludos
>
>   El 12 de octubre de 2010 10:00, carlos SALCEDO <carosam1...@hotmail.com> escribió:
>
>   Hola Armando
>
>   Yo, ojo yo pregunto por la cadena conexion
>
>   la conexion se llama = mysqlconnect
>
>   antes de hacer movimientos contra el servidor
>   preguntas si mysqlconnect es mayor que 0 si lo es
>   prosigues si no mandas un mensajito de desconexion
>
>   Bendiciones
>
>   Carlos
>
> ------------------------------------------------------------------------------
Reply all
Reply to author
Forward
0 new messages