Está en la página 1de 14

Sistemas UNI. Instructor: V. Carlos, Segura P.

LABORATORIO ADO.NET – 1.

Derechos Reservados, solo para ser usados dentro de la


institución.
Derechos de Autor

El contenido de este laboratorio tiene todos los derechos reservados, por lo tanto no se
puede reproducir, transcribir, almacenar a un sistema de recuperación o de alteración,
asimismo la traducción a otro idioma de ninguna forma o por ningún medio mecánico,
manual, electrónico, magnético, óptico o de otro modo.

La persecución de una reproducción no autorizada tiene como


consecuencia la cárcel y/o multas.

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

1 ADO.NET

1 Arquitectura y funcionalidad de ADO.NET


Los objetivos concretos de esta clase son los siguientes:

 Conocer los distintos conceptos relacionados con la Arquitectura de ADO.NET.


 Usar algunos de los diferentes proveedores de datos .NET.
 Conocer la estructura del NameSpaces relativos a datos y XML.
 Aprender a usar los objetos:

Connection.
Command.
DataReader.
DataSet.
DataAdapter.

 Trabajar en modo conectado y desconectado.

1.1 Introducción

El Mundo de ADO.NET agrupa un conjunto de librerías para acceso a datos, desde un origen basado ya sea
en una base de datos, Archivos XML, documentos de texto, Hojas de calculo. El uso y entendimiento de
ADO.NET se debe basar en el estudio de sus principales clases que proporciona.

El espacio de nombre Data.


La clase Connection.
La clase Command.
La clase DataReader.
La clase DataSet.
La clase DataAdapter.

Las aplicaciones con acceso a datos realizan operaciones de lectura, actualización, eliminación y registro
sobre un repositorio de datos, la plataforma .Net proporciona un mejoramiento el tratamiento de las
actualizaciones y ofrece la integración la integración de datos en aplicaciones distribuidas y escalables.

Una de las características de ADO.NET es el tratamiento de los datos, a nivel estructurado es decir la
información contenida puede ser fácilmente llevado a un archivo XML y dar otro tipo de uso, así como
también poder leer un archivo XML debidamente validado y ser llevado a un origen de datos.

ADO.NET forma parte del NET. Framework esta inmerso y pertenece como parte del sistema operativo y no
como era anteriormente que por cada cliente había que alojar el manejador de datos junto con el instalador
de la aplicación y realizar en forma redistribuible.

Ahora estaremos abocados al desarrollo de aplicaciones sin preocuparnos si donde se instalara la aplicación
se encontraran las librerías usadas.

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

En la actualidad ADO.NET ya es parte del .NET Framework, quiere decir que ADO.NET es parte del sistema
operativo y no más un redistribuible que se necesita alojar junto al cliente o junto al instalador de una
aplicación. Esto significa que nosotros, como desarrolladores, estaremos enfocados más al acceso a datos y
a la lógica para manipular estos datos, y no tendremos porqué preocuparnos en las librerías del cliente.

A continuación se detallan algunos conceptos básicos que se indican por varios


autores:

 ADO.NET es una tecnología de acceso a datos que se basa en los objetos


ADO (Objetos de Datos ActiveX) anteriores.

 Es una manera nueva de acceder a los datos construida sobre ADO;


ADO.NET puede coexistir con ADO.

 Además podemos decir que ADO.NET es un conjunto de clases que


exponen servicios de acceso a datos al programador de .NET.

 ADO.NET proporciona un conjunto variado de componentes para crear


aplicaciones distribuidas de uso compartido de datos. Forma parte
integral de .NET Framework, y proporciona acceso a datos relacionales,
datos XML y datos de aplicaciones.

 ADO.NET es compatible con diversas necesidades de programación,


incluida la creación de clientes de bases de datos clientes y objetos
empresariales de nivel medio utilizados por aplicaciones, herramientas,
lenguajes o exploradores de Internet.

 ADO.NET utiliza un modelo de acceso pensado para entornos


desconectados. Esto quiere decir que la aplicación se conecta al origen
de datos, hace lo que tiene que hacer, por ejemplo seleccionar registros,
los carga en memoria y se desconecta del origen de datos.

 ADO.NET es un conjunto de clases que usted utiliza para acceder y


manipular orígenes de datos como por ejemplo, una base de datos en
SQL Server o una planilla Excel.

 ADO.NET utiliza XML como el formato para transmitir datos desde y


hacia su base de datos y su aplicación Web.

En este modulo hay 3 espacios de nombres que se importará en un formulario Web o formulario Windows si
esta usando objetos de ADO.NET:

 System.Data, para la arquitectura de ADO.Net.


 System.Data.SqlClient para uso exclusivo de SqlServer.
 System.Data.OleDb y para uso de Bases de OleDB, etc.

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

El modelo de objetos ADO.NET provee una estructura de acceso a distintos orígenes de datos. En el
siguiente grafico se visualiza como se comportan dichos objetos.

Arquitectura del Modelo de ADO.NET


DataSet
Connection DataReader
DataTableCollection
Transaction SelectCommand
DataTable

UpdateCommand DataRowCollection
Command

Parameters DeleteCommand DataColumnCollection

InsertCommand ConstraintCollection
DataReader

DataRelationCollection

XML
Base de Datos

1.2 Espacios de nombres para datos en el .NET Framework.

Entre los espacios de nombres de .NET Framework relativos a datos y XML se incluyen:

System.Data
Representa el espacio de nombres principal de ADO.Net, contiene las clases que soportan el modelo
de ADO.NET, Representan la arquitectura del modelo para tener acceso a los datos de las
aplicaciones administrada. Por ejemplo al usar este espacio de nombres podemos usar la principal
clase, el DataSet.

System.Data.Common
Este espacio de nombres proporciona las clases para los proveedores de datos que soporta el .Net
Framework. Es así como cada proveedor obtiene las clases especializadas para ser utilizadas para
un origen de datos en el espacio administrado.

System.Xml
Espacio de nombre que proporciona las clases de tratamientos de archivos XML, para XML de
grandes volúmenes, para archivos pequeños, para la escritura, para la lectura, etc.

System.Data.OleDb
Las clases de OleDb carga las clases exclusivas para el manejo de datos compatibles con los
orígenes de datos que proporciona el motor OleDb, realizan comandos de conexión y ejecución para
le mantenimiento de datos, así como la administración del origen usado.

System.Data.SqlClient
Las clases de SqlClient proporcionan la administración de datos para el proveedor de SQL Server,
que permite conectarse a un origen de datos a partir del SQL Server 7.0, y ejecutar comandos de
actualización y lectura. Este espacio de nombres es similar al espacio de nombres
System.Data.OleDb, pero que es optimizado para el acceso a SQL Server 7.0 y versiones
posteriores.

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

System.Data.SqlTypes
Nos proporciona tipos de datos nativos de SQL Server, como Varchar(n), Char(n), Tinyint, etc.

System.Data.OracleClient
Estas clases permiten el acceso a orígenes de proveedor de datos Oracle en el espacio administrado.

1.3 El proveedor de datos .NET Framework

Los proveedores de datos o motor de datos del .NET Framework nos proporciona un marco de trabajo para
poder conectarnos a una base de datos para su uso de ejecutar comandos. En esta forma de trabajo los
resultados se procesan con las clases y se llenan en un DataSet de ADO.NET con el fin de mostrarlos a los
usuarios para su uso y administración.

Las clases de tratamiento de datos proporcionan una forma más flexible para el tratamiento de datos,
establece dos marcos de trabajo en forma conectada que es lo usual en toda aplicación y en forma
desconectada que es una alternativa de solución para el tratamiento de datos.

Proveedor de datos de .NET


Descripción
Framework para:
SQL Server Para Microsoft® SQL Server™ versión 7.0 o posteriores.
OLE DB Para orígenes de datos que se exponen mediante OLE DB.
ODBC Para orígenes de datos que se exponen mediante ODBC.
Oracle Para orígenes de datos de Oracle.

1.4 Objetos provistos por distintos proveedores de datos .NET

Los objetos básicos que te proporciona ADO.NET son: Connection, Command, DataReader y DataAdapter
son los elementos fundamentales del modelo de proveedor de datos de .NET Framework. En la tabla
siguiente se describen estos principales objetos.

Objeto Descripción Objeto SQL Server Objeto OleDB


Establece una conexión a un origen
de datos determinado (En que
Connection servidor nos conectamos?, Que Base SqlConnection OleDBConnection
de Datos Usaremos?, Que tipo de
Seguridad vamos a usar?.
Ejecuta un comando en un origen de
Command datos (Registrar, Modificar, Eliminar, SqlCommand OleDBCommand
Seleccionar, etc.).
Lee una secuencia de datos de sólo
avance y sólo lectura desde un
DataReader SqlDataReader OleDBDataReader
origen de datos (Como mostramos
información en forma secuencial?).
Llena un DataSet y realiza las
actualizaciones necesarias en el
DataAdapter origen de datos desde el DataSet. SqlDataAdapter OleDBDataAdapter
(Como realizamos todo lo anterior
con un solo objeto?)

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

La siguiente ilustración muestra los componentes principales de una aplicación ADO.NET.

1.5 Modelo de cómo se ejecuta el llenado de un DataSet

1.6 Estudiando el Objeto SqlConnection

Este objeto representa una conexión hacia una base de datos de SQL Server, el objeto SqlConnection
representa el objeto que administra la conexión tanto para la creación de un instancia y generación de
ejecución de comandos. El SqlConnection se utiliza junto con SqlDataAdapter y SqlCommand para
realizar el mantenimiento de un origen de datos, y aumentar el rendimiento de la conexión a una base de
datos de Microsoft SQL Server

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

ConnectionString
Obtiene o establece la cadena utilizada para abrir una base de datos de SQL Server.

Database
Obtiene el nombre de la base de datos actual o de la que se va a utilizar una vez que se abre la
conexión.

DataSource
Obtiene el nombre de la instancia del Servidor SQL Server con la que se va a establecer la
conexión.

ChangeDatabase
Cambia la base de datos actual de una conexión SqlConnection abierta dentro del mismo servido
conectado.

Open
Abre una conexión de base de datos con los valores de propiedad que especifica el ConnectionString
o la cadena de conexión cargada.

Close
Cierra la conexión con la base de datos, para liberar el comando realizado.

CreateCommand
Crea y devuelve un objeto SqlCommand asociado a la conexión SqlConnection.

Crear un nuevo proyecto

Este proyecto debe ser basado en Aplicación Windows, con el nombre BDNegocio_ADO.NET
1.- El diseño del formulario sera el siguiente:

II.- Para esto crearemos un formulario con el nombre frmConexion, en el espacio de codigo necesitamos
cargar dos espacios de nombres necesarios cada vez que utilicen objetos de base de datos, que son
System.Data y System.Data.SqlClient.

Imports System.Data
Imports System.Data.SqlClient

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

Public Class frmConexion

End Class

III.- El formulario debe quedar diseñado como muestra la figura:

Este formulario lo que hara es probar si es que tenemos conexión a la base de datos a la cual nos queremos
conectar. Para esto se utilizara un objeto SqlConnection el cual necesita como parametro de entrada un
cadena de texto que infome tanto el servidor, base de datos, tipo de seguridad, usuario y contraseña estos
dos si es que tuivieramos autenticación basada en SqlServer.

Cadena de Conexión:

Data Source=[Servidor];Initial Catalog=[Base de Datos]; Integrated


Security=[Tipo de Seguridad]

Por Ejemplo, se debe crear las variables que representara la cadena de conexión y el objeto conexión, en un
ambito general del formulario:

Public Class frmConexion

Dim strCon As String


Dim xCon As SqlConnection

End Class

Analizando la Cadena de Conexión

IV.- La cadena de conexión, re presenta la cadena que será leída por el proveedor, el cual se comunicara
con el servidor y la base de datos mencionadas en esta cadena.

 Data Source = Princesa


Indica el nombre de la maquina donde se encuentra nuestra base de datos.
Mi PC  Propiedades  Nombre del Equipo.

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

 User=paris
El usuario con el que se entra al SQL Server, en este caso el usuario es paris, comúnmente el
usuario por defecto es sa. Esto tendríamos que indicarlo si es que si utilizamos el tipo de
autenticación SQL Server.

 Integrated Security = SSPI


Indica que usa seguridad integrada.
Para conectarse a bases de datos de servidor se recomienda utilizar la autenticación de Windows
que es la autenticacion cuando nos logeamos al inicio del sistema operativo, conocida comúnmente
como seguridad integrada. Para especificar la autenticación de Windows, se puede utilizar cualquiera
de los dos siguientes:

Integrated Security=true;
Integrated Security=SSPI;

 Initial Catalog = Northwind


Nombre de la base de datos, donde se realizara las consultas.

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

V.- Escribir lo siguiente dentro del botón “Probar Conexión I”:

strCon = "Data Source=" + txtServidor.Text + _


";Initial Catalog=" + txtBDI.Text + _
";Integrated Security=True"
xCon = New SqlConnection(strCon)
Try
xCon.Open()
xCon.Close()
MessageBox.Show("Conexion Sastisfactoria")
Catch ex As Exception
MessageBox.Show("Hubo problemas con la conexion:" + ex.Message)
End Try

V.- Escribir lo siguiente dentro del botón “Probar Conexión II”:

Try
xCon.Open()
xCon.ChangeDatabase(Me.txtBDII.Text)
'Podemos realizar operaciones sobre la base II
xCon.Close()
MessageBox.Show("Conexion Sastisfactoria")
Catch ex As Exception
MessageBox.Show("Hubo problemas con la conexion:" + ex.Message)
End Try

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

1.7 Estudiando el Objeto SqlDataAdapter

Este objeto es uno de los mas importante y nuevos que viene con la plataforma .NET, esta clase proporciona
un conjunto de comandos de datos y conexión a base de datos, que es usado para llenar en un DataSet y
realizar la creacion dentro de este DataTables que representa el conjunto de datos extraido de la base de
datos. Además proporciona comandos de actualización sobre la el conjunto de datos que extrajo.

El objeto SqlDataAdapter se utiliza como una conexión entre el DataSet y SQL Server para la recuperación y
actualización de datos. Para el llenado de un DataSet lo realiza mediante la ejecución del comando Fill, que
cambia los datos en DataSet para que coincidan con los datos del origen de datos; y usa el comando
Update, que realiza la actualización desde el dataset a su origen de datos mediante comandos de
actualizacion correspondientes.

DeleteCommand
Realiza la instrucción Transact-Sql para la eliminación de registros o mediante la ejecución del
procedimiento almacenado correspondiente

InsertCommand
Realiza la instrucción Transact-Sql para la inserción de registros o mediante la ejecución del
procedimiento almacenado correspondiente

SelectCommand
Realiza la instrucción Transact-Sql para la selección o muestra de registros o mediante la ejecución
del procedimiento almacenado correspondiente.

UpdateCommand
Realiza la instrucción Transact-Sql para la modificación o mediante la ejecución del procedimiento
almacenado correspondiente.

Fill
Realiza el llenado de un conjunto de registros mediante el comando SelectComand hacia un DataSet,
creando dentro del DataSet el objeto DataTable.

FillSchema
Agrega al DataTable creado en el DataSet y realiza la configuración del esquema para hacerlo
coincidir con el del origen de datos.

Update
Realiza las instrucciones INSERT, UPDATE o DELETE respectivas para cada fila insertada, actualizada
o eliminada en DataSet, para esto lo realiza mediante los comandos InsertCommand,
UpdateCommand y el DeleteCommand.

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

I.- Empecemos diseñando en el siguiente formulario con el nombre frmDataAdapter.

dgEmpleados

dgProductos

dgClientes

II.- Crear la siguiente variable en el formulario en un ambito global para ser accedido:

'Cadena de Conexion a usar:


Dim strCon As String = "Data Source=SvrPruebas;" + _
"Initial Catalog=Northwind;Integrated Security=True"
'Objeto Conexión:
Dim xCon As New SqlConnection(strCon)
'Creación del DataSet:
Dim ds As New DataSet
'Variable para las consultas:
Dim sConsulta As String

III.- En el load del formulario colocaremos lo siguiente:

Try
'Primera Forma:
sConsulta = "SELECT * FROM EMPLOYEES"
Dim AdEmployees As New SqlDataAdapter(sConsulta, strCon)
AdEmployees.Fill(ds)

'Segunda Forma:
sConsulta = "SELECT * FROM PRODUCTS"
Dim AdProducts As New SqlDataAdapter(sConsulta, strCon)
AdProducts.Fill(ds, "Mis_Productos")

'Tercera Forma:
xCon.Open()
sConsulta = "SELECT * FROM CUSTOMERS"
Dim AdCustomers As New SqlDataAdapter(sConsulta, xCon)
AdCustomers.Fill(ds, "Mis_Clientes")
xCon.Close()

'Mostrar en los DataGridViews:

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

Me.dgEmpleados.DataSource = ds.Tables(0)
Me.dgProductos.DataSource = ds.Tables("Mis_Productos")
Me.dgClientes.DataSource = ds.Tables("Mis_Clientes")

Catch ex As Exception
MessageBox.Show("Sucedio un Error:" + ex.Message)
End Try

IV.- Configurar los botones de “Ver Empleados”, “Ver Productos” y “Ver Clientes” y así mismo con los
botones que realizan la eliminación.

OBSERVACIONES: Sobre el contenido del DataSet, se utiliza el método Fill, del DataAdapter, el cual
necesita dos argumentos primero el DataSet, y un nombre que identifique al DataTable que se va a crear
dentro del DataSet. DataSet .
Supongamos que tenemos 3 DataAdapter (adapter1, adapter2 y adapter3) que están configurados para
traer las tablas Employees, Region y Terrritories respectivamente., entonces para llenar en el DataSet se
tendría:

adapter1.Fill (Ds, "Employees")


adapter2.Fill(Ds, "Region")
adapter3.Fill(Ds, "Territories")

El DataSet gráficamente debe contener lo siguiente, según la primera forma:

Como segunda forma pudimos no indicarle el nombre para el DataTable, el cual se creara como índices
como se muestra en el grafico:

adapter1.Fill(Ds)
adapter2.Fill(Ds)
adapter3.Fill(Ds)

0 Del DataAdapter 1

Del DataAdapter 3

2
1 Del DataAdapter 2

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

La ultima forma que hubiéramos realizado es crear DataTables en vez de un DataSet, para esto hubiéramos
definido 3 DataTables de la forma siguiente:

Dim Dt_Employ As New DataTable


Dim Dt_Region As New DataTable
Dim Dt_Territorio As New DataTable

Y para llenarlos seria:

adapter1.Fill(Dt_Employ)
adapter2.Fill(Dt_Region)
adapter3.Fill(Dt_Territorio)

Para mostrar la información individual se utilizaría la propiedad Tables del DataSet especificando el nombre
que se le puso:

DataGrid.DataSource = Ds.Tables("Employees") ó
DataGrid.DataSource = Ds.Tables("Region ") ó
DataGrid.DataSource = Ds.Tables("Territories ")

En el caso que no se le puso nombre seria así:

DataGrid.DataSource = Ds.Tables(0) ó
DataGrid.DataSource = Ds.Tables(1) ó
DataGrid.DataSource = Ds.Tables(2)

Y para el tercer caso solo seria igualar al DataTable que queremos mostrar:

DataGrid.DataSource = Dt_Employ ó
DataGrid.DataSource = Dt_Region ó
DataGrid.DataSource = Dt_Territorio

Modelo de Uso de los Objetos:

Cadena de Conexión

SqlConnection

Open

SqlDataAdapter

Fill
Close DataSet

SqlDataAdapter

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS