Ver Mensaje Individual
  #34 (permalink)  
Antiguo 27/11/2009, 07:23
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:
Te refieres a 1 conexión cada vez que el usuario quiera llevar a cabo una acción que implique acceso a la BD no? Es decir si insertar registros, creo una la abro y la cierro. Luego si decide ir a la opción modificar registros creo otra, la abro y la cierro, consultar registros, lo mismo.... Así?
No. Abres y cierras la conexión sin volver a crearla, si quieres, pero la idea es no volver a crear una instancia de MysqlConnection. Crear conexiones consume mucho tiempo de conexión, comparativamente. Es ineficiente crear tantos, y tarde o temprano saturarías el Pool de conexiones.
Por sesión de usuario me refiero a que cada usuario de la aplicación tenga su propio username y clave en MySQL. De ese modo, cuando empieza a trabajar con datos usa siemrpe la misma sesión en la aplicación (al modo de sesión en este foro, por ejemplo).
Si creas una clase sesión,por ejemplo, podrías crear dentro de ella un objeto de la clase que maneja la relación con la base.
Yo, por ejemplo, tengo una clase denominada Sesion que se instancia al loguear contra MySQL. Esa clase contiene un objeto público que se denomina BaseDatos que es una instancia de una clase denominada MySQLDataBase y que tiene esta definición basica y variables de clase:
Código vb.net:
Ver original
  1. Option Explicit On
  2. Imports System.ComponentModel
  3. Imports MySql.Data.MySqlClient
  4. Imports Microsoft.Win32
  5. Imports System
  6. Imports System.Net
  7. Imports System.Globalization
  8. Imports System.IO
  9. Imports System.Configuration.ConfigurationSettings
  10.  
  11. Public Class MysqlDataBase
  12.     ' Variables de conexión ------------------------------------------------------
  13.     Public Conexion, CxText As MySqlConnection
  14.     Private strConexion As String
  15.  
  16.     ' Variables de transacción ----------------------------------------------------
  17.     Public Trans As MySqlTransaction
  18.  
  19.     ' Variables de lectura --------------------------------------------------------
  20.     Private Adapter As MySqlDataAdapter
  21.     Private LectorDatos As MySqlDataReader
  22.  
  23.     ' Variables de ejecucion ------------------------------------------------------
  24.     Private Sentencias As MySqlCommand
  25.     Private BuildSql As MySqlCommandBuilder
  26.  
  27.     ' Variables de error ----------------------------------------------------------
  28.     Private errorDb As MySqlError
  29.  
  30.     ' Variables de region ---------------------------------------------------------
  31.     Private nFI As NumberFormatInfo = New CultureInfo("en-US", False).NumberFormat
  32.  
  33.     ' Variables de uso interno ----------------------------------------------------
  34.     Private sSQL As String
  35.  
  36.  ' Métodos y funciones....
  37.  
  38. End Class
Con esto manejo todo.

Cita:
.close y =Nothing ? Te refieres a eso?
Si en vez de DataReaders uso MySqlDataAdapter ? Igual?
Exactamente. Ciérralo y luego declaralo Nothing.
Los MysqlDataAdapter no requieren eso porque mueren con la conexión, pero puedes hacer uso de su método .Dispose y luego ponerlo a Nothing.
Como yo manejo una sola instancia de MysqlDataAdapter en la clase, y la uso todas las veces que requiera leer una tabla o cargar un dataset (volviendo a instanciarla, obviamente), solamente lo destruyo cuando se cierra la sesión.

Cita:
Cita:
En lugar de declara simplemente Nothing una conexión solamente, destruye el objeto que la contiene.
Cómo lo hago?
Código:

Objeto=Nothing
Objeto=Dispose
Objeto=Nothing, donde Objeto contenga una variable de clase de la clase MysqlConnection.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 27/11/2009 a las 07:44