Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Colaboración: El Guille
Primeramente voy a contarles que soy un desarrollador, buscador incansable de herramientas que
faciliten mi trabajo, que me permita ahorrar tiempo y que además, agregue calidad al software que
desarrollo. Al ingresar en el mundo .Net empecé a explorar en los patrones de “buenas practicas
de acceso a datos” y buscando en el sitio de Microsoft me encontré con algo que me pareció una
buena idea. Después de ver su contenido y analizarlo en profundidad me pareció tremendamente
práctico y decidí incorporarlo a mi set de herramientas de desarrollo. Estoy hablando de
“Application Blocks” (algo así como ladrillos para la construcción de aplicaciones) y en este caso,
específicamente el “Data Access Application Blocks”.
Este ensamblado provee una forma simple, ordenada y limpia de acceder a los datos del Servidor
de base de datos MS SQL Server. Muchos de nosotros, los desarrolladores, pensamos que
debemos concentrar nuestro esfuerzo en lo que nuestra aplicación “debe hacer” y no en “como se
hace”. Sabemos que perdemos, o mejor dicho “gastamos”, la mayor parte de nuestro tiempo
tratando de solucionar el acceso a datos como así también la interfase con el usuario, la cual nos
lleva bastante tiempo también, pero “ese” es otro tema que no es parte de este artículo.
Pero bien, justamente estos “Application Blocks” vienen a responder a esa necesidad, y lo hace
con un valor agregado, que es que responde a los patrones de buenas prácticas de ADO.NET.
El Microsoft Data Access Application Block para .NET consiste de un ensamblado denominado
"Microsoft.ApplicationBlocks.Data", el cual contiene toda la funcionalidad necesaria para realizar la
mayoría de las funciones de acceso a datos sobre la base de datos Microsoft SQL Server 2000.
La idea es que a partir de esta introducción ustedes exploren las distintas variantes de
cada uno de estos métodos que encontraran en el apartado “Referencia” de la
documentación que acompaña al ensamblado.
Abora bien. Asumiendo que ya lo bajaron e instalaron en su PC, para comenzar debemos
abrir Visual Studio .Net , crear un proyecto nuevo y agregar una referencia a
Microsoft.ApplicationBlocks.Data
Para ello:
imports System.Data
imports System.Data.SqlClient
imports System.Xml
ExecuteNonQuery
cual se le debe pasar como parámetro de entrada la identificación del producto. Este
devolverá tres parámetros que son: el nombre del producto, el precio unitario y la cantidad.
txtResults.Clear()
txtResults.Text = arParms(1).Value & ", " & arParms(2).Value & ", " & arParms(3).Value
Catch ex As Exception
' En caso de error arroja una excepción
Throw ex
End Try
ExecuteDatareader
ExecuteReader soporta data binding y se puede usar como “data source” en controles de
datos para controles WebForm como por ejemplo DataList control.
Executedataset
Vale la pena tener en cuenta que el ADO.NET DataSet es un contenedor de datos que
consiste de una o más tablas y opcionalmente las relaciones entre ellas. Es un objeto
desconectado, es decir lee la información de la base de datos, se desconecta y se olvida
de la fuente de datos. Se trabaja en forma aislada y provee métodos de actualización de la
base de datos y que además soporta XML.
Data Access Application Block genera un objeto DataSet con nombres por defecto para los
objetos DataTable contenidos en el Dataset. Por ejemplo Table, Table1, Table2, y así
sucesivamente.
Executescalar
Se debe utilizar cuando requerimos recuperar un valor único como respuesta una consulta.
Notemos que lo que devuelve es un objeto.
En este ejemplo se hace una consulta a la tabla de clientes que cuenta cantidad de
clientes por país seleccionado.
Executexmlreader
Ejecuta un comando o procedimiento almacenado que retorna los datos con formato XML
en un objeto XmlReader.
En este ejemplo utilizaremos un comando SQL “Select” con la cláusula “FOR XML AUTO”
que genera el XML.
Private constring As String = "Persist Security Info=False;Integrated
Security=SSPI;database=northwind;server=myserver\SQLServer;Connect Timeout=30"
' Pasamos como parámetros un objeto concesión, tipo de comando texto y una sentencia
SQL
Dim xreader As XmlReader = SqlHelper.ExecuteXmlReader(conn, CommandType.Text,
"SELECT * FROM Customers FOR XML AUTO")
While (xreader.Read())
Conclusiones
Vemos que de manera muy simple podemos acceder a los datos, manejar con facilidad los
objetos dataset, datareader y XML!!!.
Con estos “Application bloque” nuestra vida se hace mas fácil, nos permite tener código
mas ordenado y eficiente. Nos libera de los errores “tontos” como son las conexiones que
quedan abiertas u otros recursos que olvidamos liberar después de usarlos.
Les recomiendo fuertemente bajar este assembly y estudiarlo mas detenidamente ya que
ofrece mucho mas de lo que hemos visto aquí. Viene acompañado de una breve
documentación y ejemplos de utilización de cada uno de los métodos.
Por último, si uds. Son desarrolladores “inquietos”, que se bajan cuanto producto o
herramienta anda por ahí, muy probablemente ya tengan instalada esta dll. Solo por
curiosidad hagan una búsqueda de microsoft.applicationsblock.data.dll . Muchas
herramientas de desarrollo ya lo han implementado, por lo que vale la pena incursionar en
este tema.