elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Clase para conexión a base de datos C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Clase para conexión a base de datos C#  (Leído 4,704 veces)
RevolucionVegana


Desconectado Desconectado

Mensajes: 477



Ver Perfil
Clase para conexión a base de datos C#
« en: 9 Abril 2017, 17:07 »

Hola a todos he creado una clase para hacer la conexión a la base de datos y poder reutilizarla cuantas veces quiera, pues bien, me gustaría saber si hace falta que esa clase retorne algo o como va la cosa, el código es este:

Código
  1. using MySql.Data.MySqlClient;
  2.  
  3. namespace CapaDatos
  4. {
  5.    class ConexionDB
  6.    {
  7.        private string CadenaConexion = "server=localhost; userid=x; password=x; database=x";
  8.  
  9.        public void ConectarYa()
  10.        {
  11.        MySqlConnection HacerConexion = new MySqlConnection(CadenaConexion);
  12.        HacerConexion.Open(); //Abrimos conexión
  13.        }
  14.    }
  15. }
  16.  
  17.  

Como veis dentro de la clase he creado el método ConectarYa y he puesto que no retorne nada, es correcto o tiene que retornar algo? Había pensado en poner return HacerConexion.Open() pero no sabría de que tipo es el retorno, y por cierto cuando abres una conexión se queda abierta todo el rato hasta que la cierres con otra línea de código o se cierre el programa??

Gracias!!!!


En línea

HAS DICHO ALGO NENAAAAAA?!
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Clase para conexión a base de datos C#
« Respuesta #1 en: 9 Abril 2017, 20:05 »

dentro de la clase he creado el método ConectarYa y he puesto que no retorne nada, es correcto o tiene que retornar algo?

me gustaría saber si hace falta que esa clase retorne algo o como va la cosa

La clase que estás instanciando, MySqlConnection, representa la conexión a la base de datos MySql que vas a abrir, y además es una clase disposable (utiliza recursos no administrados que deberían ser liberados cuando ya no se los necesite usar más), con esto ya tienes dos motivos fundamentales por los cuales deberías devolver la instancia de esa clase.



Había pensado en poner return HacerConexion.Open() pero no sabría de que tipo es el retorno

Estás en Visual Studio, la IDE más completa y sofisticada en el mundo de la programación (¡tenlo presente!), ante la duda tan solo tienes que posicionar el puntero del ratón sobre el nombre del miembro ("Open") y la característica Intellisense de Microsoft te mostrará un tooltip diciéndote de que tipo es el miembro, o en caso de una función que tipo de valor de retorno devuelve... en este caso ninguno, puesto que MySqlConnection.Open() es un método sin valor de retorno.



he creado una clase para hacer la conexión a la base de datos y poder reutilizarla cuantas veces quiera

Código
  1. class ConexionDB

Una clase cuyo propósito sea proveer métodos de uso genérico, por lo general debe ser una clase "sellada" (es decir, no heredable).
sealed class ConexionDB

Además deberías declarar un constructor de accesibilidad privada para impedir que la clase pueda ser instanciada por equivocación. [/quote]
private ConexionDB() { }

Código
  1. public void ConectarYa()

Y por ese último motivo que acabo de mencionar, los métodos de uso genérico deberían tener una accesibilidad global.
public static void ConectarYa()

En general aquí abajo te muestro buenas prácticas de diseño que se deberían seguir según lo estipula en las directrices de diseño de Microsoft:

Código
  1. #region " usings "
  2.  
  3. using System.Diagnostics;
  4. using MySql.Data.MySqlClient;
  5.  
  6. #endregion
  7.  
  8. namespace MySqlUtils {
  9.  
  10.    /// <summary>
  11.    /// Contains helper methods for a <c>MySQL</c> database.
  12.    /// </summary>
  13.    public sealed class DatabaseHelper {
  14.  
  15.        #region " Constructors "
  16.  
  17.        [DebuggerNonUserCode()]
  18.        private DatabaseHelper() { }
  19.  
  20.        #endregion
  21.  
  22.        #region " Public Methods "
  23.  
  24.        /// ----------------------------------------------------------------------------------------------------
  25.        /// <summary>
  26.        /// Establishes a connection to a <c>MySQL</c> Server database using the specified connection string.
  27.        /// </summary>
  28.        /// ----------------------------------------------------------------------------------------------------
  29.        /// <example> This is a code example.
  30.        /// <code>
  31.        /// using (MySqlConnection connection = GetConnection("server=localhost; userid=x; password=x; database=x")) {
  32.        ///     // ...
  33.        /// }
  34.        /// </code>
  35.        /// </example>
  36.        /// ----------------------------------------------------------------------------------------------------
  37.        /// <param name="connectionString">
  38.        /// The connection string used to open the <c>MySQL</c> database.
  39.        /// </param>
  40.        /// ----------------------------------------------------------------------------------------------------
  41.        /// <returns>
  42.        /// A <see cref="MySqlConnection"/> instance that represents the connection established with the <see cref="MySQL"/> database.
  43.        /// </returns>
  44.        /// ----------------------------------------------------------------------------------------------------
  45.        [DebuggerStepThrough()]
  46.        public static MySqlConnection GetConnection(string connectionString) {
  47.  
  48.            MySqlConnection connection = new MySqlConnection(connectionString);
  49.            connection.Open();
  50.            return connection;
  51.  
  52.        }
  53.  
  54.        #endregion
  55.  
  56.    }
  57.  
  58. }

Ejemplo de llamada:
Código
  1. MySqlConnection db = MySqlUtil.DatabaseHelper.GetConnection("MySQL query");

Si intentas hacer las cosas más o menos similar entonces estarás avanzando a pasos de gigante en el "nivel principiante", la estructurización/diseño es fundamental, te ayudará en todo, sobre todo a ser mas analítico o metódico. La documentación Xml es muy util y recomendable pero bueno si te parece algo muy tedioso de realizar entonces lo puedes ignorar, yo es que soy un maniático y un cansino del perfeccionismo, pero no te fijes en los tochos de documentación sino en la estructurización de todo lo demás... y en las nomenclaturas de los miembros, muy importante también (deberías intentar no escribir absolutamente nada en Español... ¡ni siquiera los commentarios!)

PD: Esto ha sido solo un consejo personal para intentar ayudarte un poco a que descubras como poder mejorar tus modelos, es mi opinión la cual se puede aceptar o rechazar sin problema; ¡que cada cual aprenda a programar como prefiera!.

¡Saludos!


« Última modificación: 9 Abril 2017, 20:19 por Eleкtro » En línea


RevolucionVegana


Desconectado Desconectado

Mensajes: 477



Ver Perfil
Re: Clase para conexión a base de datos C#
« Respuesta #2 en: 9 Abril 2017, 20:28 »

W O W que currada respuesta Elektro como se nota que estoy en tu terreno jaja vale muchas gracias al final lo había solucionado de forma muy chapuza porque me urge darme prisa con esto que estoy haciendo pero lo voy a cambiar ahora mismo y ya se lo que tengo que retornar gracias a ti!! Gracias Elektro y un saludo!
En línea

HAS DICHO ALGO NENAAAAAA?!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Conexión a base de datos
PHP
& eDu & 3 1,229 Último mensaje 11 Agosto 2008, 01:21
por najmuddin
Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql « 1 2 »
Java
Pablo Videla 16 18,108 Último mensaje 1 Marzo 2010, 20:17
por Leyer
Conexion a base de datos
Programación Visual Basic
leliCabello 5 2,051 Último mensaje 3 Mayo 2010, 20:53
por 43H4FH44H45H4CH49H56H45H
controlador para conexión base de datos db2
Java
KuraraGNU 0 3,687 Último mensaje 8 Marzo 2011, 12:16
por KuraraGNU
Conexión a base de datos DBF
Bases de Datos
Esgrimidor 0 1,600 Último mensaje 2 Mayo 2012, 19:32
por Esgrimidor
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines