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
}
Suscribirse a:
Enviar comentarios (Atom)
9 comentarios:
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...
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.
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
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;
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
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
Con respecto al error pueba poniendo \\ en lougar de una
Con respecto al error pueba poniendo \\ en lougar de una
Publicar un comentario