Capa de Acceso a Datos en ASP.NET

Hola, en este tutorial les mostraré como desarrollar una página en ASP.NET con conexión a una base de datos de manera dinámica y utilizando una DAL (Data Access Layer) “Capa de Acceso a Datos”, Espero les pueda servir de mucha ayuda.

1.- Creamos un sitio web ASP.NET

TutorialASPNETTierLayers01

2.- Creamos la base de datos.

TutorialASPNETTierLayers02

3.- Creamos una tabla, en este caso estoy creando una tabla llamada tbClientes

TutorialASPNETTierLayers03

4.-Creamos el siguiente procedimiento Almacenado para poder agregar clientes.

CREATE PROCEDURE dbo.InsertarCliente

    (
    @ID_Cliente int,
    @Nombre_Cliente varchar(50),
    @ApellidoPaterno varchar(50),
    @ApellidoMaterno varchar(50),
    @Telefono int,
    @Direccion varchar(50),
    @Descripcion varchar(MAX)
    )

AS
    INSERT INTO tbClientes VALUES(@ID_Cliente,@Nombre_Cliente,@ApellidoPaterno,@ApellidoMaterno,@Telefono,@Direccion,@Descripcion)

TutorialASPNETTierLayers04

5.-  Agrego una clase llamada AccesoaDatos.cs

TutorialASPNETTierLayers05

6.- Me voy al Web.config (Archivo de Configuración de la Aplicación), busquemos los tags <appSettings/> y <connectionStrings/> y modifiquemos con el siguiente código.

<appSettings>
        <add key="miProveedor" value="System.Data.SqlClient"/>
    </appSettings>
    <connectionStrings>
        <add name="miCadenaConexion" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Clientes.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
    </connectionStrings>

Este procedimiento nos ayuda a hacer de una manera dinámica la parte de la conexión y el escoger nuestro proveedor de acceso a datos desde código.

7.- Nos vamos a la clase y agregamos el namespace.

using System.Configuration;

8.- Agregamos el siguiente código, para hacer referencia a la cadena de conexión y al proveedor.

  public static string miCadenaConexion
    {
        get
        {
            return ConfigurationManager.ConnectionStrings["miCadenaConexion"].ConnectionString;
        }
    }

    public static string miProveedor
    {
        get
        {
            return ConfigurationManager.AppSettings["miProveedor"];
        }
    }

9.- Agrega el siguiente namespace

using System.Data.Common;
 public static DbProviderFactory dbProveedor
    {
        get
        {
            return DbProviderFactories.GetFactory(miProveedor);
        }
    }

10.- Agregamos este método, que nos permitará hacer la conexión, y tomar como parámetros el procedimiento almacenado y todos sus parámetros.

 private static void executeNonQuery(string ProcedimientoAlmacenado, List<DbParameter> parametros)
    {
        using (DbConnection conexion = dbProveedor.CreateConnection())
        {
            conexion.ConnectionString = miCadenaConexion;
            using (DbCommand comando = dbProveedor.CreateCommand())
            {
                comando.Connection = conexion;
                comando.CommandText = ProcedimientoAlmacenado;
                comando.CommandType = CommandType.StoredProcedure;

                foreach (DbParameter param in parametros)
                    comando.Parameters.Add(param);

                conexion.Open();

                comando.ExecuteNonQuery();
            }
        }
    }

11.- Agregamos el método de InsertarCliente.

  public static void insertarCliente(int ID_Cliente, string Nombre_Cliente, string ApellidoPaterno,
        string ApellidoMaterno, int Telefono, string Direccion, string Descripcion)
    {

        List<DbParameter> parametros = new List<DbParameter>();

        DbParameter param1 = dbProveedor.CreateParameter();
        param1.DbType = DbType.Int32;
        param1.Value = ID_Cliente;
        param1.ParameterName = "ID_Cliente";
        parametros.Add(param1);

        DbParameter param2 = dbProveedor.CreateParameter();
        param2.DbType = DbType.String;
        param2.Value = Nombre_Cliente;
        param2.ParameterName = "Nombre_Cliente";
        parametros.Add(param2);

        DbParameter param3 = dbProveedor.CreateParameter();
        param3.DbType = DbType.String;
        param3.Value = ApellidoPaterno;
        param3.ParameterName = "ApellidoPaterno";
        parametros.Add(param3);

        DbParameter param4 = dbProveedor.CreateParameter();
        param4.DbType = DbType.String;
        param4.Value = ApellidoMaterno;
        param4.ParameterName = "ApellidoMaterno";
        parametros.Add(param4);

        DbParameter param5 = dbProveedor.CreateParameter();
        param5.DbType = DbType.Int32;
        param5.Value = Telefono;
        param5.ParameterName = "Telefono";
        parametros.Add(param5);

        DbParameter param6 = dbProveedor.CreateParameter();
        param6.DbType = DbType.String;
        param6.Value = Direccion;
        param6.ParameterName = "Direccion";
        parametros.Add(param6);

        DbParameter param7 = dbProveedor.CreateParameter();
        param7.DbType = DbType.String;
        param7.Value = Descripcion;
        param7.ParameterName = "Descripcion";
        parametros.Add(param7);

        executeNonQuery("InsertarCliente", parametros);
    }

    private static void executeNonQuery(string StoredProcedure, List<DbParameter> parametros)
    {
        using (DbConnection con = dbProveedor.CreateConnection())
        {
            con.ConnectionString = miCadenaConexion;
            using (DbCommand cmd = dbProveedor.CreateCommand())
            {
                cmd.Connection = con;
                cmd.CommandText = StoredProcedure;
                cmd.CommandType = CommandType.StoredProcedure;

                foreach (DbParameter param in parametros)
                    cmd.Parameters.Add(param);

                con.Open();

                cmd.ExecuteNonQuery();
            }
        }
    }

12.- Nos vamos al formulario y agregamos algunos controles cuadros de texto y un botón de agregar.

TutorialASPNETTierLayers06

Y programemos el botón agregar:

 protected void Button1_Click(object sender, EventArgs e)
    {
        AccesoaDatos.insertarCliente(int.Parse(txtID.Text),
            txtNombre.Text, txtApellidoPaterno.Text,
            txtApellidoPaterno.Text, int.Parse(txtTelefono.Text),
            txtDireccion.Text, txtDescripcion.Text);
    }

Simplemente mandamos a llamar a nuestro método y pasamos como parámetros los cuadros de texto. Ejecutalo F5

13.- Checamos si realmente lo guarda.

TutorialASPNETTierLayers08

TutorialASPNETTierLayers09

Del mismo modo haganlo para actualizar, borrar.

Visto en Tecnologias Microsoft

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay


Tags:
Esta entrada fue posteada el Saturday, January 3rd, 2009 a las9:47 PM bajo la categoria ASP.NET. Tu puedes seguir los comentarios a este post a travez de RSS 2.0 feed. Vos podes dejar un comentario, o trackback desde tu propio sitio.

Dejar un comentario

Tu comentario