Ver Mensaje Individual
  #28 (permalink)  
Antiguo 26/11/2009, 05:12
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 3 meses
Puntos: 2658
Respuesta: Conectar visual studio 05 con mysql

Cita:
Creeis que debo definirlas en la clase y luego hacer los new en cada evento de botón y al terminar asignar a nothing o debería definirlas dentro de cada evento de botón con nombres diferentes en cada evento es decir:
Conexion1, Adapter1, Sentencias1 para Button5_Click y Conexion2, Adapter2, Sentencias2 para el otro
Yo personalmente prefiero crear una clase exclusivamente para manejar toda la relación con la BB.DD., incluyendo la creación de las conexiones.
Sobre este punto mis recomendaciones mínimas son:

1. Usa una sola conexión por sesión de usuario. Abrir y cerrar conexiones satura rápidamente el pool de conexiones de Windows y eventualmente se agotará. Lamentablemente no tienes mucho control sobre él, de modo que cuando se satura sólo queda esperar un tiempo hasta que se limpia de conexiones muertas.

2. Si usas DataReaders, cuando los dejes de usar, primero ciérralos y luego elimínalos. Un DataReader sin cerrar y sin liberar es una conexión de lectura más abierta.

3. En lugar de declara simplemente Nothing una conexión solamente, destruye el objeto que la contiene. El Nothing sólo no libera bien los recursos, y la conexión persiste en el pool.

4. Como el objeto MysqlCommand depende de la conexión, si destruyes el objeto Connection, el Command se queda sin recursos. No molesta, pero no está de más liberarlo.

5. Usa un sólo objeto Mysql por tipo en la clase (rara vez necesitas más de eso), y reusalos.

6. No generes objetos conexión de clase indiscriminadamente. No sirven más que para complicar el código. Si necesitas abrir una segunda conexión, hazlo en un método, de modo que una vez terminado el método el objeto muera. Lo mismo vale para el resto de los objetos.

7. La liberación de memoria, o su limpeiza puede ser reafirmada por medio de algunos métodos. Este te sugiero ponerlo en el módulo, de modo de invocarlo desde cualquier parte:
Código vb.net:
Ver original
  1. 'Funcion de liberacion de memoria
  2.     Public Sub ClearMemory()
  3.         Try
  4.             Dim Mem As Process
  5.             Mem = Process.GetCurrentProcess()
  6.             SetProcessWorkingSetSize(Mem.Handle, -1, -1)
  7.         Catch ex As Exception
  8.             'Control de errores
  9.         End Try
  10.  
  11.     End Sub
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)