miércoles, 27 de enero de 2010

Clase para conectarse a base de datos C#

http://comunicandotj.wordpress.com/2009/02/27/basedatos_csharp/
Pues bien, les mostrare la forma en como hasta hoy he trabajado con Bases de Datos tanto SQLExpress como SQL Server. Tal ves existan algunas otras mejores maneras de hacerlo, si conoces alguna porfavor hasmelo saber.

Primero que nada, les dire que Necesitamos hacer una Clase de Conexion la cual nos sirve tanto para Desktop Application como para Web Site.

Clase Conexion:

/* Importamos las Librerias Necesarias para Trabajar */

using System.Data;

using System.Data.SqlClient;

using System.Data.Common;

/* Creamos la Clase */

class Conexion

{

private SqlConnection Con; // Obj Conexion

public Conexion()

{

string DtsConection = “”; // Contendra los Datos las Conexion.

/* Para trabajar con el servidor SQLExpress de la maquina */

string DtsConection = “Data Source=.\SQLEXPRESS;Initial Catalog=NOMBRE_BD; ” + “Integrated Security=True;”;

/* Para trabajar con Archivo de BD (.mdf), si que este montado en SQLExpress */

//DtsConection = “Server=.\SQLExpress;AttachDbFilename=C:\Direccion\NOMBRE.mdf; Database=NOMBRE;

Trusted_Connection=Yes;”;

/* Para trabajar con un servidor remoto Ya sea una Base de datos Remota o en Caso de WEB SITE cuando la pongamos en el Host */

/* Necesitamos la IP del Servidor de BD, el puerto generalmente es 1533, Usuario y Password lo proporciona el Hostring */

//DtsConection = “Data Source=72.17.135.40,1533; Database=NOMBRE_BD; User ID=USUARIO; Password=PASSWORD;”;

Con = new SqlConnection(DtsConection);

}

public void Abrir() // Metodo para Abrir la Conexion

{

Con.Open();

}

public void Cerrar() // Metodo para Cerrar la Conexion

{

Con.Close();

}

public DataSet Ejecutar(string Comando, string Tabla) // Metodo para Ejecutar Comandos

{

SqlDataAdapter CMD = new SqlDataAdapter(Comando, Con); // Creamos un DataAdapter con el Comando y la Conexion

DataSet DS = new DataSet(); // Creamos el DataSet que Devolvera el Metodo

CMD.Fill(DS, Tabla); // Ejecutamos el Comando en la Tabla

return DS; // Regresamos el DataSet

}


} // Fin de la Clase

Ahora que Ya tenemos Nuestra Clase Conexion, lo unico que necesitamos para Conectarnos a una Base de Datos o Ejecuar un Comando, etc. es:

Crear un Objeto del Tipo Conexion.

Conexion CN = new Conexion();

Abrir la Conexion

CN.Abrir();

Ejecutar los Comando que Deseemos.

Recordemos que el Metodo Ejecutar no Regresa un Objeto del tipo DataSet que es como una Colecion de Tablas. Y si queremos poner el resultado del comando en una Tabla hariamos lo siguiente:

DataTable Tabla = CN.Ejecutar(“SELECT * FROM USUARIOS”,”USUARIOS”).Tables[0];

Antes de Terminar permiten Recomendarles la forma de utilizar la clase Conexion y el Manejo de Excepciones.

Try

{

CN.Abrir();

DataTable DT = CN.Ejecutar(“COMANDO…”,”TABLA”).Tables[0];

CN.Cerrar();

}

Catch (Exception ex) // Maneja los Posibles Errores

{

// Para Mostrar la origen del Error

MessageBox.Show(ex.ToString());

}

Finally

{

CN.Cerrar();// Evitar que la Conexion quede Abierta

}

9 comentarios:

Unknown dijo...

Hola, yo también uso clase para conectarse a una base de datos, me preguntaba si haz podido realizar conexión a diferentes servidores, es decir diferentes ip's, usuarios.. insertando parámetros a esa clase...

Ejemplo en un formulario de inicio, seleccionar a que servidor quieres conectarte y luego usar esa clase...

Marrufman dijo...

Guillermo
lo que comentas con respecto a diferentes servidores e ips usuarios lo manejo desde el servidor de base de datos mediante los linked servers, por otra parte creo que no es conveniente manejar muchos tipos de usuario para un sistema, pues puede ocasionar fuertes problemas en cuanto a seguridad, lo que yo recomiendo es crear y utilizar usuarios de solo lectura en los sistemas que publican datos y crear Stored procedures para los sistemas que escriben datos.

El Chesare dijo...

Gracias por el aporte, estaba buscando algo así, eto iniciando en esto de la programación, hasta que lei este post ya me quedo claro como funcionan las clases.

Gracias

El Chesare dijo...
Este comentario ha sido eliminado por el autor.
Anónimo dijo...

por ejemplo si necesito llamar la clase en otra clase y pasarle a el comando el con como lo llamo eje:

System.Data.SqlClient.SqlCommand cmd;
cmd = new SqlCommand("dbo.consultatodos",con);
cmd.CommandType = CommandType.StoredProcedure;

Edgar Hernandez dijo...

Tengo un problema que no puedo resolver cuando uso la linea: “Server=.\SQLExpress;AttachDbFilename=C:\Direccion\NOMBRE.mdf; Database=NOMBRE;

me tira un error en la primera letra después de la diagonal invertida \ no se a que se debe si esta todo en string

Edgar Hernandez dijo...

Tengo un problema que no puedo resolver cuando uso la linea: “Server=.\SQLExpress;AttachDbFilename=C:\Direccion\NOMBRE.mdf; Database=NOMBRE;

me tira un error en la primera letra después de la diagonal invertida \ no se a que se debe si esta todo en string

Unknown dijo...

Con respecto al error pueba poniendo \\ en lougar de una

Unknown dijo...

Con respecto al error pueba poniendo \\ en lougar de una