Page 1 of 1

que clase nos permite RECONECTAR mas simple?

PostPosted: Wed Aug 16, 2023 3:49 pm
by leandro
En este mundo cada vez mas globalizado e hiperconectado, aumenta mas la necesidad de alojar nuestras bases de datos en la nube (servidores remotos), nosotros hemos venido usando para realizar la conexión la herramienta ADO, pero últimamente varios usuarios nos han reportado problemas de conexión, ya que cae el internet así sea por unos unos segundos y la aplicación no logra hacer la reconexión. Mr. Rao publico una función para realizar la RECONEXIÓN, pero no es el todo eficiente.

Ya que vamos a ir migrando la aplicación de a poco a webview, queremos aprovechar y si es necesario cambiar la forma en que nos conectamos a las bases de datos de mysql/mariadb.

Que camino me recomiendan tomar, para hacer mas estable la conexión con la bases de datos?

De antemano gracias

Re: que clase nos permite RECONECTAR mas simple?

PostPosted: Fri Aug 18, 2023 3:21 pm
by nageswaragunupudi
Mr. Rao publico una función para realizar la RECONEXIÓN,

I forgot.
For my own use and testing, can you reproduce that function here?
Now I need it for myself.

Re: que clase nos permite RECONECTAR mas simple?

PostPosted: Fri Aug 18, 2023 4:34 pm
by sysctrl2
Mi experiencia me dice que al servidor hay que ir solo cuando necesitamos traer algo
o cuando vamos a modificar algo.
No es necesario tener abierta la conexión todo el tiempo
Sql no es DBF.

es importante comprender la parte (FRONTEND y BACKEND)

Code: Select all  Expand view

   WHILE ::oCon != NIL
      MSGRUN( "Un momento estoy Conectando con el Servidor", "Usuario", {|| ::oCon := Connection2():New() } )
   END

   IF ::oCon == NIL
      msgstop('No se pudo conectar con el servidor', ::cUser )
      RETURN NIL
   ENDIF

   * AQUI HAGO LA TAREA

   ::oCon:End() //muere la conexión

 


Saludos

Re: que clase nos permite RECONECTAR mas simple?

PostPosted: Fri Aug 18, 2023 4:49 pm
by JoseAlvarez
sysctrl2 wrote:Mi experiencia me dice que al servidor hay que ir solo cuando necesitamos traer algo
o cuando vamos a modificar algo.
No es necesario tener abierta la conexión todo el tiempo
Sql no es DBF.

es importante comprender la parte (FRONTEND y BACKEND)

Code: Select all  Expand view

   WHILE ::oCon != NIL
      MSGRUN( "Un momento estoy Conectando con el Servidor", "Usuario", {|| ::oCon := Connection2():New() } )
   END

   IF ::oCon == NIL
      msgstop('No se pudo conectar con el servidor', ::cUser )
      RETURN NIL
   ENDIF

   * AQUI HAGO LA TAREA

   ::oCon:End() //muere la conexión

 


Saludos


jutamente hace meses abrí un hilo sobre este tema. Suguiero le den una mirada. Puede ser de utilidad para este.

https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42582&sid=232698d30cafaad153bf5e3fd42312ff

Re: que clase nos permite RECONECTAR mas simple?

PostPosted: Sat Aug 19, 2023 2:42 am
by gabo
Leandro
Puedes usar un timer que este validando la conexion con el servidor.. depende de tu aplicacion y el proceso que necesites realizar..
por ejemplo yo detecto si durante un tiempo no uso uso el teclado o ratón abro una pantalla y pido una contraseña en esa pantalla pongo un timer que este validando la conexion con el servidor... esa solución para mi me funciona perfectamente
Un Saludo!

Re: que clase nos permite RECONECTAR mas simple?

PostPosted: Tue Aug 22, 2023 2:56 pm
by leandro
Hola buenos días, gracias a todos por responder
I forgot.
For my own use and testing, can you reproduce that function here?
Now I need it for myself.


Mr. Rao esta es la función que nos proporcionaste.
Code: Select all  Expand view

Function AdoExecute( oCn, bAction ) //Aporte Mr.Rao Foro FW
Local uRet
if oCn:State == 0 .or. Empty( oCn:Properties( "Current Catalog" ):Value )
    oCn:Close()
    oCn:Open()
endif
if oCn:State > 0
    TRY
        uRet  := Eval( bAction, oCn )
    CATCH
        FW_ShowAdoError( oCn )
    END
else
    msginfo("Conexión Perdida, imposible recuperar","Error de conexión")
endif
//Usage:
//oRs      := AdoExecute( oMyConObject, { |oCn| FW_OpenRecordSet( oCn, cSql ) } )
//uResult  := AdoExecute( oMyConObject, { |oCn| oCn:Execute( cSql ) } )
return uRet
 


Cesar y José gracias por la ayuda.
Mi experiencia me dice que al servidor hay que ir solo cuando necesitamos traer algo
o cuando vamos a modificar algo.
No es necesario tener abierta la conexión todo el tiempo
Sql no es DBF.

es importante comprender la parte (FRONTEND y BACKEND


Con respecto al este aporte, es el tema de conexión y desconexión con un servidor remoto aumenta el tiempo de respuesta demasiado, ya que depende de muchos factores, en alguna oportunidad lo intente así, tomamos los tiempos, pero es realmente demorado en algunas ocasiones, lo mejor que nos ha funcionado de momento es mantener la aplicación en línea con el servidor. Pero no se si este problema sea de ADO, por eso nos surge la idea de cambiar de clase y podamos mejorar esos tiempos y reconexiones.

Gabo gracias por responder
Leandro
Puedes usar un timer que este validando la conexion con el servidor.. depende de tu aplicacion y el proceso que necesites realizar..

Si, de momento así lo tenemos, el problema es cuando la conexión se cae (realmente), así sea por algunos segundos. Luego le es imposible reconectarse.

Re: que clase nos permite RECONECTAR mas simple?

PostPosted: Wed Aug 23, 2023 4:25 pm
by sysctrl2
No uso ADO,
siempre he usado dolphin y en versiones actuales uso las funciones de mariaDB nativo de fwh
y para agilizar el tráfico es mejor usar codigo nativo de SQL.
saludos.

Re: que clase nos permite RECONECTAR mas simple?

PostPosted: Wed Aug 23, 2023 5:13 pm
by Armando
Leandro, amigos:

Me parece haber visto un comando para determinar el tiempo que la conexión debe permanecer activa
antes de desconectarse.

Saludos