You are on page 1of 13

ACCESO A DATOS CON ADO.

NET Y SQL SERVER


Definicin de ADO.NET

ADO.NET es un extenso conjunto de clases .NET que permiten recuperar y manipular los
datos provenientes de mltiples fuentes. Adems, incorpora un modelo de programacin que
incluye accesos nativos a fuentes de datos y XML.
Del mismo modo, permite alcanzar los siguientes objetivos en el desarrollo de una aplicacin.

Interoperabilidad. Porque emplea XML como el formato estndar, para transferir


informacin desde el origen de datos hacia los aplicativos clientes.
Dado que XML es un estndar de la industria, su utilizacin hace que la
comunicacin de datos, entre fuentes distintas, sea mucho ms sencilla.

Mantenimiento. Porque simplifica las tareas de mantenimiento de los aplicativos.

Rendimiento. En su modo conectado, ADO.NET trabaja directamente con los tipos de


datos de la base de datos, por lo tanto, evita el trabajo de realizar conversiones de tipos.
Adems, los conectores nativos permiten establecer conexiones ms rpidas con las fuentes
de datos.

Escalabilidad. Conserva los recursos de un sistema, pues permite el trabajo en entornos


desconectados que no requieren consumir recursos de conexiones duraderas con el servidor.

Arquitectura de ADO.NET

Existen dos componentes de ADO.NET que se pueden utilizar para acceder y manipular
data:
a. Proveedores de datos de .NET Framework
Son componentes diseados explcitamente para la manipulacin de datos y el acceso
rpido a datos de slo lectura y slo avance.
El objeto Connection proporciona conectividad a un origen de datos;
mientras que el objeto Command permite tener acceso a comandos de base de datos
para devolver datos, modificar datos, ejecutar procedimientos almacenados y enviar o
recuperar informacin sobre parmetros. De igual manera, DataReader proporciona una
secuencia de datos de alto rendimiento desde el origen de datos. Por ltimo, el objeto
DataAdapter proporciona el puente entre el objeto DataSet y el origen de datos.
Asimismo, DataAdapter utiliza objetos Command para ejecutar comandos SQL en el origen
de datos, tanto para cargar DataSet con datos, as como para reconciliar en el origen de
datos, los cambios aplicados a los datos incluidos en el DataSet.
b. DataSet
Estn expresamente diseados para el acceso a datos, independientemente del origen de
datos. Como resultado, se puede utilizar con mltiples y distintos orgenes de datos, con
datos XML o para administrar datos locales de la aplicacin. Asimismo, DataSet contiene
una coleccin de uno o ms objetos DataTable formados por filas y columnas de datos,
as como, informacin sobre claves principales, claves externas, restricciones y de
relacin, las cuales se encuentran referidas con los datos incluidos en los objetos
DataTable.

Modelo de Objetos de ADO.NET

ADO.NET especifica un modelo comn de objetos para los .Net Framework Data Providers.
Las

interfaces

implementadas

ms

comunes

son

las

que se

describen

a continuacin.

IDbConnection. Permite establecer una conexin con una fuente de datos especfica.
Cada .Net Framework Data Provider incluye una clase que implementa IDbConnection. Por
ejemplo, el .Net Framework Data Provider para SQL Server, incluye una clase llamada
SqlConnection.

IDbCommand. Permite ejecutar un comando contra la fuente de datos. Los comandos


pueden incluir parmetros y pueden ejecutarse dentro de una transaccin. Cada .Net
Framework Data Provider incluye una clase que implementa el IDbCommand. Por ejemplo, el
.Net Framework Data Provider para SQL Server, incluye una clase llamada SqlCommand.

IDataReader. Esta interface permite lecturas del tipo forward-only y read-only de una
fuente de datos.

IDataAdapter. Esta interface permite poblar de data, a un DataSet, el cual almacena los
cambios que se realicen sobre la data; cualquier cambio es grabado de vuelta a la fuente de
datos.

I. AMBIENTE CONECTADO
CLASE SLQCONNECTION
Data Source =Server
Initial Catalog=DataBase
Integrated Security
User Id
Password

CLASE SQLCOMMAND
CLASE SQLDATAREADER
Metodos
EXECUTENONQUERY (Insertar, modificar y elimina datos)
EXECUTESCLAR
EXECUTEREADER

VERIFICAR LA CONEXIN.

SqlConnection CN = new SqlConnection("Data Source=Server2011;Initial Catalog=Northwind; Integrated Security=True");

button1_Click
try
{
CN.Open();
if (CN.State == ConnectionState.Open)
{

MessageBox.Show("Conexion Satisfactoria");
}
else
{
MessageBox.Show("Conexion Insatisfactoria");
}
}
catch (Exception E)
{
MessageBox.Show(E.Message);
}
CN.Close();

LA CLASE Command
btnActualizar
SqlCommand CMD = new SqlCommand("Update Products set UnitPrice=UnitPrice*1.07 where CategoryID=4",CN);
CN.Open();
int Rows;
Rows=CMD.ExecuteNonQuery();
if (Rows > 1)
{
MessageBox.Show("Tabla actualizada correctamente");
}
else
{
MessageBox.Show("Error en la actualizacin");
}
CN.Close();

button2_Click
SqlCommand CMD = new SqlCommand("Select count(*) from Customers", CN);
CN.Open();
int Rows;
Rows = Convert.ToInt16(CMD.ExecuteScalar());
MessageBox.Show("La cantidad de Clientes son: " + Rows.ToString());
CN.Close();

button3_Click

SqlCommand CMD = new SqlCommand("Select CompanyName from Customers", CN);


CN.Open();
SqlDataReader Reader;
Reader = CMD.ExecuteReader();
while (Reader.Read())
{
listBox1.Items.Add(Reader.GetString(0));
}
CN.Close();

LAB01
INSERTAR DATOS CON EL METODO ExecuteNonQuery

Nota:
Base de Datos: Northwind
Nombre del Formulario: FrmManCategoria
Dentro de:

Agregar el siguiente cdigo:


CN.Open();
SqlCommand CMD = new SqlCommand("INSERT CATEGORIES(CategoryName,Description)
VALUES(' " + txtNombre.Text + "',' " + txtDescripcion.Text + "')", CN);
CMD.CommandType = CommandType.Text;
int rows;
rows = CMD.ExecuteNonQuery();
if (rows ==1)

{
MessageBox.Show("La nueva categoria fue insertado satisfactoriamente!");
}
else
{
MessageBox.Show("Error al inserta nueva catergoria!");
}
CN.Close();

EJECUCION DE PROCEDIMIENTOS ALMACENADOS CON EL SQLCOMMAND

Nota:
Base de Datos: Northwind
Crear el Procedimiento Almacenado: uspListarCategoria

Otra forma, con menos lneas de cdigo

UTILIZAR COMANDOS CON PARAMETROS


Para poder pasar los parmetros a una consulta parametrizada o procedimiento almacenado , el objeto Command,
cuenta con la propiedad Parameters que es una coleccin de objetos Parameters. Para pasar valores Parameter a un
comando, debe crear un objeto Parameter por cada prametro, definir el nombre, tipo y valor, y agregar el objeto
Parameter a una coleccin Parameters del objeto Command.

Para el Botn: Comando con Parmetros: Pasndole un valor en el cdigo

Para el Botn Aceptar: Pasndole el valor desde el cuadro de texto

RECUPERAR VARIOS VALORES DE UN PROCEDIMIENTO ALMACENADO


Otra propiedad de la clase Parameter es la propiedad Direction, que determina si el procedimiento
almacenado puede modificar el valor del parmetro. La configuracin de la propiedad Direction es un miembro de la
enumeracin ParameterDirection: Input, Output, InputOutput y ReturValue. La propiedad Direction de un parmetro
que es definido por el procedimiento debera definirse como Output: El valor del parmetro no se utilizara en el
procedimiento, pero el cdigo del procedimiento puede establecerlo para que devuelva informacin a la aplicacin
que invoca. Si el parmetro es utilizado para pasar informacin al procedimiento, as como para enviar tambin
informacin a la aplicacin que lo invoca, la propiedad Direcctin debera establecerse en InputOutput.

Procedimiento almacenado que devuelve el total de parmetros y de elementos ordenados por el cliente
especifico. Este procedimiento almacenado acepta como parmetro el identificador, obviamente, y devuelve dos
valores: el total de pedidos realizados por el cliente y el nmero de unidades pedidas.

LA CLASE DATAREADER
Para leer filas devuelvas por una consulta de seleccin, se debe llamar al mtodo ExecuteReader del objeto
Command, que devolver un objeto DataReader, un objeto SqlDataReader para consultas que se ejecutan en un
SQL Server.

Las propiedades mtodos bsicos del objeto DataReader se explican a continuacin:

Read: Este mtodo desplaza el cursor delante de la fila siguiente en el conjunto de resultados. Utilice este
mtodo para leer las filas del conjunto de resultados, normalmente desde un bucle While.
Get<type>:

II. AMBIENTE DESCONECTADO

DATASET
La creacin de aplicaciones con acceso a Datos es sencilla y en gran medida, abstrada por las clases Connection,
Command y DataReader. El problema con dichas clases es que no ofrecen un mtodo coherente para guardar los datos
en el cliente.

Puede pensar en un DataSet como una pequea base de datos que reside en memoria.
Rellenar los DataSet
Los DataSet se rellenan con DataAdapter.
LA CLASE DATAADAPTER
Para usar DataSet en una aplicacin, debe crear un objeto DataAdapter, que es la tcnica preferida para
introducir elementos en un DataSet. El DataAdapter no es otra cosa que una coleccin de objetos Command
necesarios para ejecutar los diferentes comandos en la base de datos.
Un DataAdapter es un contenedor de objetos Connection y Command