Microsoft Unity Data Access Application Block – Ejemplos Básicos

Jorge Ruiz | 09 de marzo de 2009 | Añadir comentario

Más sobre: ASP.NET, General, SQL Server | Tags: ,

Microsoft Enterprise Library nos proporciona un bloque de aplicación denominado “acceso a datos” que nos ofrece una abstracción para la utilización de bases de datos.

A continuación, mostraremos unos ejemplos de código fuente sencillo para permitir el acceso a una base de datos SQL Server.

Deberíamos utilizar las siguientes referencias using:

using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data;

Los ejemplos son los siguientes:

/// Ejecución de consulta devolviendo un dataset.
try
{
   string consulta = "SELECT * col1, col2 FROM TABLA_PRUEBA";
   Database db = DatabaseFactory.CreateDatabase();
   System.Data.Common.DbCommand cmd = db.GetSqlStringCommand(consulta);
   DataSet ds = db.ExecuteDataSet(cmd);           

   // Ejemplo de recorrido.
   DataTable DT = ds.Tables[0];
   int j = DT.Rows.Count;
   for (int i = 0; i < j; i++)
   {
         ListaCualquiera.Add(DT.Rows[i]["DS_Tratamiento"].ToString());
   }
 }
 catch (Exception ex)
 {
     bool reThrow = ExceptionPolicy.HandleException(ex, "BaseDatos");
     if (reThrow) throw;
 }

/// Ejecución de consulta obteniendo escalar.
try
{
    string sentencia = "select max(col1) from TABLA_PRUEBA";
    Database db = DatabaseFactory.CreateDatabase();
    System.Data.Common.DbCommand cmd = db.GetSqlStringCommand(sentencia);
    int cd = (int) db.ExecuteScalar(cmd);
}
catch (Exception ex)
{
    bool reThrow = ExceptionPolicy.HandleException(ex, "BaseDatos");
    if (reThrow) throw;
}

/// Ejecución de insert, utiliza parámetros.
try
{
     String valor = "Valor2";
     sentencia = "insert into TABLA_PRUEBA values ('Valor1', @valor)";
     cmd = db.GetSqlStringCommand(sentencia);

     //Asociar tipos y variables al comando
     db.AddInParameter(cmd, "valor", DbType.String, valor);

     //Ejecutamos el comando
     int resultado = db.ExecuteNonQuery(cmd);
}
catch (Exception ex)
{
     bool reThrow = ExceptionPolicy.HandleException(ex, "BaseDatos");
     if (reThrow) throw;
}

/// Ejecución delete.
try
{
    Database db = DatabaseFactory.CreateDatabase();
    String sentencia = "delete from TABLA_PRUEBA where DCol1 = 'valor5'";
    System.Data.Common.DbCommand cmd = db.GetSqlStringCommand(sentencia);

    int resultado = db.ExecuteNonQuery(cmd);
}
catch (Exception ex)
{
    bool reThrow = ExceptionPolicy.HandleException(ex, "BaseDatos");
    if (reThrow) throw;
}

Para que estos ejemplos funcionen correctamente se debe configurar en el fichero de configuración de la aplicación la cadena de conexión y establecerla como “por defecto”.

Además, los ejemplos utilizan el bloque de aplicación de excepciones de Enterprise Library.

Más sobre: ASP.NET, General, SQL Server | Tags: ,