Sugerencia Visual Foxpro 9.0

Cordial saludo.
Tengo un sistema de información en visual FoxPro 9.0 con MySql 5.0 el cual en mi sistema tengo la siguiente función de conexión para conectarme a la base de datos.
Function conexion_remota(i)
LOCAL StringRemoto,coneccion
StringRemoto="DRIVER="+ALLTRIM("MySQL ODBC 3.51 Driver")+";"+"SERVER="+ALLTRIM(i)+";"+"PORT=3306;"+"UID="+ALLTRIM("root")+";"+"PWD="+ALLTRIM("XXXXX")+";"+"DATABASE="+ALLTRIM("XXXXX")+";"+"OPTIONS=0;"     
      SQLSETPROP(0,"DispLogin",3)
      coneccion=SQLSTRINGCONNECT(StringRemoto)
      IF coneccion>=1
            RETURN coneccion
      else
=MESSAGEBOX("No se pudo Conectar con el Servidor, por favor inténtelo mas tarde",48,_screen.aplicacion)
            quit
      endif
ENDFUNC
Donde en el formulario principal de mi aplicación ejecuto la función por ejemplo:
Public conecta
conecta=conexion_remota(tmp_ip)
la variable conecta ya empiezo a utilizarla por ejemplo:
if sqlexec(conecta,"select * from usuarios","tmp_usuarios")>0
      select tmp_usuarios
      if reccount('tmp_usuarios')>0 then
          brow
      ENDIF
Endif
Mi inquietud es la siguiente: si estoy realizando el uso correcto de cómo trabajar con la base de datos, porque en mi sistema ejecuto la aplicación y la base de datos permanece abierta todo el tiempo ya sea que no esté trabajando en el sistema.
O es que debo conectarme a la base de datos cada vez que necesite utilizar una tabla y cerrarla inmediatamente deje de utilizarla.
Por favor quiero un poco de orientación sobre el tema explicándome cual es la manera correcta de accesar y cerrar la bases de datos.
Muchas te agradecería tu colaboración.

1 Respuesta

Respuesta
1
Para dejar de utilizar la base de datos de MySql basta con ejecutar, digamos al momento de salir del sistema:
SQLDISCONNECT(conecta)
Eso hará que tu sesión se cierre en MySql.
Hasta que no ejecutes este comando, tu sesión (variable conecta) permanecerá disponible, aún incluso sin realizar nada en el sistema (consultas, inserciones o modificaciones).
En algunas ocacions es mejor llamar a la función enviándole como parámetro 0 para cerrar todas las conexiones. Úsala así y garantizas cerrar cualquier vínculo con la Base de Datos cuando salgas del sistema:
SQLDISCONNECT(0)
Hola, pero si el sistema esta en varios pc apuntando a la base de datos, no cierra la base de datos para los demás que estén utilizando el sistema.
La sesión se cierra sólo para el usuario que está haciendo uso de la base de datos MySql, y esto se refleja cuando usas el comando que te sugerí. Y, esto en definitiva NO afecta otras conexiones en la red.
En cuanto a si debes tener abierta la sesión mientras la instancia de la aplicación esté en ejecución O sólo tener abierta la conexión por cada instrucción sql (edición, insertado, eliminación, consulta) que requieras depende de la estrategia de acceso que desees ofrecer. Eso lo decides tu en base a rendimiento del sistema por la cantidad de usuarios que deban estar conectados simultáneamente.
En algunos sistemas que he desarrollado sólo me conecto, hago lo que necesito y cierro la conexión (sqldisconnect(0)) en otras aplicaciones, la conexión pemanece mientras tenga mi aplicación en ejecución.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas