Foros del Web » Programación para mayores de 30 ;) » .NET »

Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

Estas en el tema de Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms en el foro de .NET en Foros del Web. Hola que tal, bueno mi situación es la siguiente; En una clase he puesto las funciones que me permiten conectarme/desconectar a mysql, hacer un select ...
  #1 (permalink)  
Antiguo 09/07/2009, 09:04
 
Fecha de Ingreso: julio-2008
Mensajes: 116
Antigüedad: 15 años, 9 meses
Puntos: 1
Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

Hola que tal, bueno mi situación es la siguiente; En una clase he puesto las funciones que me permiten conectarme/desconectar a mysql, hacer un select / insert, etc. Bueno todo lo anterior funciona bien, solo que por ejemplo, cuando abro un form1 ahi abro una conexion, este formulario contiene dos botones que repectivamente abren otro formulario (uno para seleccionar ciertos productos(form2), y el otro mostrar un reporte(form3)). Para estos formularios se abre nuevamente una conexión y hacer las consultas correspondiente. Habrá forma de que utilice la conexión abierta del form1???

Entonces dentro del proyecto tengo una clase COnexion_Mysql, y tres formularios
en form1 abro una conexion de tipo Conexion_mysql (esto para validar que haiga conexion).
en form1 pongo por ejemplo

Public Conexion as new Conexion_Mysql
Public Sub from1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Conexion.Open
End Sub

y lo que quiero es por ejemplo que desde form2 y form3 utilizar conexion de form1

Espero haberme dado a entender, de antemano gracias!!!
  #2 (permalink)  
Antiguo 14/07/2009, 13:44
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

hace una clase y luego la llamas desde cada formulario para su uso.

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 14/07/2009, 23:37
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Respuesta: Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

Bueno a ver si te parece mi forma de hacerlo:

1- Lo primero es hacer una clase que exponga una propiedad que te de acceso a un MysqlConnection. Usando la técnica de clases singleton que significa tener una sola instancia siempre de una clase. Existen varias formas de implementarla pero lo que nos interesa es tener acceso a una clase específica en este caso MysqlConnection.

2- La propiedad que expondrá la connecion deberá tener 2 cosas principales: no aplicar set y confirmar si ya una instancia existe sino crearla.

Hagamos un ejemplo:

public class Global
{
private MysqlConnection _Connection;
private string _ConnectionString = "";

public static string ConnectionString
{
get { return this._ConnectionString; }
set { this._ConnectionString = value; }
}

public static MysqlConnection Connection
{
get
{
if(this._Connection == null)
{
this._Connection = new MysqlConnection(ConnectionString);
this._Connection.Open();
}

return this._Connection;
}
}
}

Fijate en el modo como se trabaja una nueva instancia, solo se crea si es null así que solo sería una vez.

En esa clase Global pondrías el ConnectionString primero y luego puedes hacer uso de la conección en todo tu proyecto usando siempre la misma conección.

Saludos,
  #4 (permalink)  
Antiguo 15/07/2009, 10:03
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

Define la clase pero según el modelo singleton, que consiste en una única instancia para la misma clase, de ese modo tendrás una conexión persistente para todas las demás instancias de objeto
  #5 (permalink)  
Antiguo 15/07/2009, 10:11
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

Código:
this._Connection = new MysqlConnection(ConnectionString);
this._Connection.Open();

Muy buena observacion y creo cabe recalcar que la conexion se quedara abierta todo el tiempo, no deberia abrirse y cerrarse apenas termine la consulta? (Segun lo que entendi sobre ADO.NET)

Corrijanme si me equivoco.
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #6 (permalink)  
Antiguo 15/07/2009, 10:19
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

tienes razon se debe cerrar la conexion ya que no se va a utilizar siempre transacciones al servidor
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #7 (permalink)  
Antiguo 15/07/2009, 16:53
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Respuesta: Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

Se puede mantener activa la conección cuando uno usa programas windows, para web es necesario que se cierre por cada transacción.

Solo tener cuenta que al cerrar el programa uno debe cerrar la conección.

Para que les quede claro como realmente trabaja el ADO.NET con las conecciones aquí les dejo este artículo:
http://www.dotnetpanama.com/dotnetpa...-de-datos.aspx

Saludos,

Última edición por dwaks; 18/07/2009 a las 07:33
  #8 (permalink)  
Antiguo 17/07/2009, 16:44
 
Fecha de Ingreso: julio-2008
Mensajes: 116
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

Hola que tal, muchas gracias por sus comentarios, probaré lo que me indican. Se han de preguntar que "Por que quiero tener una conexión abierta", es por lo siguiente: Hago una consulta para ello abro conexión-realizo consulta-y cierro conexión, bueno en la tabla consultada contiene millones de registros, entonces cuando realizo una consulta se tarda aprox entre 5 - 30 mins. Lo que observe es que cuando hago una consulta, y realizo una segunda pero esta ultima en seguida de la anterior, no tarda tanto como la primera, a diferencia de que si hay mucho tiempo de diferencia entre ambas.
Quisas lo que pretendo hacer este mal o no adecuado, pero entonces como puedo optimar las consultas. Bueno saludos que estén bien, de nuevo gracias por su atención!!
  #9 (permalink)  
Antiguo 17/07/2009, 17:33
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Respuesta: Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

Cuando tienes muchos registros en la base de datos, hablando de millones lo mejor es agregar index a las tablas, estos index agilizaran los querys.

Para eso buscate informacion sobre eso en la base de datos que manejes.

Mirate este Artículo esta en ingles y habla de la buena practica de el uso de los index en Sql Server 2005:

http://sqlblogcasts.com/blogs/ssqane...practices.aspx

Saludos,
  #10 (permalink)  
Antiguo 18/07/2009, 08:29
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

Esto me hace recordar a lo que una vez me paso con MySQl y C#.net , el caso es que cuando lo ejecutaba usando un MySQLHelper se demoraba 5 veces mas que si lo hacia a mano, con esto conclui, que no deberia usar esta acceder a la Base de datos , al menos para MySQL, si tu consulta se demora de 5-30 min deberias de preocuparte, tengo un par de consultas que me devuelven mas de 50 000 registros, es mas hacen inner joins a mas de 5 tablas y la respuesta es de 2 seg en el peor de los casos (Claro que actualmente estoy trabajndo con SQL Server).

Y como dijo dwaks Revisa tus tablas debe de estar mal indexada y trata de probar tu consulta en el mismo analizdor de consultas del MySQL y asi podras ver si el problema es tener la conexion abierta(Problema en .NET) o si es porque esta mal diseñada tu base de datos(problema en MySQL).
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #11 (permalink)  
Antiguo 20/07/2009, 14:42
 
Fecha de Ingreso: julio-2008
Mensajes: 116
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Usar una misma conexion MYSQL-VB.Net 2008 en distintos forms

Hola que tal!!! muchas gracias por sus comentarios, tengo que checarlo bien, nada mas que me de un poco de tiempo....

Entonces en conclusiones esta mal tener una conexión abierta??? bueno supongo que si!!. Mi base de datos no es muy extensa y tampoco las tablas estan vinculas, solo tiene una tabla, pero esta se llena por día con alrededor de 1,500,000 registros. No uso lo que son los index, pero lo tendré que incorporar.

Mi base de datos esta en Mysql y uso Vb.Net 2008.

Bueno que tengas una tarde agradable, saludos!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:19.