I.- Objetivo II.

Anuncio
FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA
PROGRAMACIÓN VISUAL
Profr. Víctor Castillo
PRÁCTICA No. 8
Creación de una conexión de datos usando acceso no conectado con ADO.NET
ALUMNO: ________________________________________________ GRUPO: ____
I.- Objetivo
Crear una conexión de datos mediante acceso no conectado con un proveedor de
datos del framework .NET.
II.- Introducción
ADO.NET es la tecnología sobre la cual se enfoca principalmente la arquitectura
de base de datos del framework de .NET. Tal tecnología tiene las siguientes
características:
•
Usa XML para transferir datos.
•
Se pueden acceder datos de varios proveedores: OLE DB, ODBC, SQL
server.
Se
pueden
encontrar
ás
proveedores
en:
http://msdn.microsoft.com/downloads.
•
Soporta arquitectura de no conexión.
•
Proporciona representación común de datos.
Como se muestra en la Figura 1, la arquitectura de ADO.NET se compone de un
objeto proveedor de datos, mismo que debe ser manipulado preferentemente
mediante un conjunto de datos. Uno de los aspectos más interesantes de
ADO.NET es que utiliza un modelo de capas, en el que es posible separar la
presentación de datos, la lógica de negocios y los datos.
Un conjunto de datos (DataSet) incluye una o más tablas basadas en un origen de
datos, puede contener información sobre las relaciones y restricciones en el origen
de datos (ver Figura 1).
1 de 10
Figura 1. La tecnología ADO.NET.
Otro componente importante de la tecnología ADO.NET es el proveedor de datos o
data provider, el cual sirve como puente entre una aplicación y un origen de datos.
El framework .NET incluye los siguientes proveedores:
–
–
–
–
ODBC (disponible en el espacio de nombre System.Data.Odbc).
OLE DB (disponible en el espacio de nombre System.Data.OleDb).
Oracle
(disponible
en
el
espacio
de
nombre
System.Data.OracleClient).
SQL
Server
(disponible
en
el
espacio
de
nombre
System.Data.SqlClient).
Un proveedor de datos puede recuperar y actualizar datos y cuenta con los
siguientes objetos:
–
–
–
–
Conexión (Connection).
Orden (Command).
Lector de datos (DataReader).
Adaptador de datos (DataAdapter).
La tarea más importante de un objeto tipo conexión es presentar atributos y
métodos para establecer y modificar las propiedades de conexión de datos
(identificación del usuario, contraseña, por ejemplo). Los siguientes ejemplos
mostrados en el Código 1 crean conexiones a dos distintos proveedores de datos
(OleDB y SqlClient):
2 de 10
OleDbConnection conexion1 = new OleDbConnection();
conexion1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0
;Password=;User ID=Admin; Data Source=E:\Authors.mdb“;
conexion1.Open();
SqlConnection conexion2 = new SqlConnection();
conexion2.ConnectionString = "Data Source=localhost;user id=sa;pwd=;
Initial Catalog=Northwind";
conexion2.Open();
Código 1. Creación de dos conexiones mediante el uso de dos proveedores de datos diferentes.
Un objeto del tipo orden (command) ejecuta sentencias SQL y devuelve resultados
de las mismas. El Código 2 muestra un ejemplo de una orden.
SqlCommand comando =
new SqlCommand("SELECT * FROM rTransaccion WHERE atendido=0");
Código 2. Definición de una instancia de una orden.
Por otra parte, un objeto lector de datos (DataReader) se usa para crear una
aplicación de sólo lectura. El siguiente código crea una conexión a la tabla
Employes de la base de datos Northwind (incluidas en las la mayoría de las
versiones de Microsoft SQL Server) y un lector de datos es usado para desplegar
en la consola el primero de todos los campos de la tabla Employes, para ello se
utiliza como proveedor de datos SQLClient.
string cadena = "data source=localhost; Initial Catalog=Northwind;user id=sa;pwd=;";
string cadenaSQL = "SELECT lastname, firstname FROM Employees";
SqlConnection conexion = new SqlConnection(cadena);
SqlCommand comando = new SqlCommand();
comando.CommandText = cadenaSQL;
comando.Connection = conexion;
conexion.Open();
SqlDataReader lectorDatos;
lectorDatos = comando.ExecuteReader();
while (lectorDatos.Read())
{
Console.WriteLine((lectorDatos.GetString(0)));
}
lectorDatos.Close();
conexion.Close();
Código 3. Uso de un lector de datos.
Un objeto adaptador de datos (DataAdapter) se usa para intercambiar datos entre
un origen de datos y un conjunto de datos (DataSet). Lo más común es usar tantos
adaptadores como tablas tenga el DataSet. Como ejemplo de la definición de un
DataAdapter usando un proveedor de datos SqlClient tenemos el Código 4.
3 de 10
SqlDataAdapter adaptadorDatos = new SqlDataAdapter();
adaptadorDatos.SelectCommand = comando;
Código 4. Creación de un adaptador de datos usando el proveedor de datos SqlClient.
Las características de los objetos DataReader y DataAdapter son tan importantes
que ellas definen los dos tipos de conexiones de que dispone ADO.NET, los
primeros se usan para acceso conectado a una fuente de datos, mientras que los
segundos para acceso en modo conectado. En esta práctica haremos énfasis en el
último tipo de conexión mencionado debido a que el acceso a bases de datos
distribuidas se beneficia del mismo al permitir utilizar un acceso al origen de
datos sólo cuando este sea realmente necesario, la Figura 2 muestra el esquema
de este tipo de acceso, en cual se puede apreciar que para llevarlo a cabo es
necesario crear primeramente un objeto del tipo conexión a la base de datos, la
conexión se relaciona entonces con un adaptador de datos –el cual permite
ejecutar comando SQL en el origen de datos-, con el fin de que un componente
gráfico use los datos contenidos en un adaptador de datos, este debe asociarse a
un conjunto de datos.
Figura 2. Esquema de un acceso orientado a no conexión utilizando la tecnología ADO.NET.
Para ilustrar en forma completa los puntos mencionados previamente
mostraremos cómo desarrollar una aplicación con acceso orientado a no conexión
utilizando el proveedor SqlClient de ADO.NET. Primero, debemos considerar que
existe ya creada una instancia de SQL Server en nuestro equipo y que hemos
creado una base de datos llamada pracsFIME, así mismo, que hemos creado una
tabla llamada alumno, cuya estructura se muestra en la Figura 3).
Para acceder a una tabla de SQL Server mediante ADO.NET podemos crear una
aplicación Windows en el entorno de desarrollo de Visual Studio .NET. La Figura
4 muestra la distribución que tiene nuestro ejemplo. El componente gráfico
mostrado al centro del formulario es un objeto del tipo dataGrid.
4 de 10
Figura 3. Estructura de la tabla alumno creada en SQL Server.
Figura 4. Aspecto de diseño del formulario de ejemplo. El recuadro que se encuentra al centro es un
componente dataGrid llamado dataGrid1.
5 de 10
El código para el evento Click del botón de comando que es necesario para llenar
el dataGrid con los datos de la tabla alumno es mostrado en el Código 4. Observe
como el orden en el que se llevan a cabo los comandos concuerda con el esquema
mostrado en la Figura 2, en el cual se aprecia que para realizar un acceso de no
conexión es necesario primeramente realizar la conexión (comando.Connection =
conexionDatos),
luego
se
debe
crear
el
adaptador
de
datos
(adaptadorDatos.SelectCommand = comando), el cual posteriormente debe vincularse a
un conjunto de datos (adaptadorDatos.Fill(conjuntoDatos,"alumno")) para que pueda
vincularse finalmente a un componente gráfico (dataGrid1.DataSource =
conjuntoDatos.Tables[0]), en este caso un dataGrid.
private void button1_Click(object sender, System.EventArgs e)
{
string cadComandoSQL = "SELECT * FROM alumno";
SqlDataAdapter adaptadorDatos = new SqlDataAdapter();
SqlCommand comando = new SqlCommand();
SqlCommand comandoActualizar = new SqlCommand();
SqlConnection conexionDatos = new SqlConnection();
comandoActualizar.Connection = conexionDatos;
conexionDatos.ConnectionString =
"Data Source=IBMVICTOR;user id=sa;pwd=sysadmin;Initial Catalog=pracsFIME";
conexionDatos.Open();
comando.Connection = conexionDatos;
comando.CommandText = cadComandoSQL.Trim();
adaptadorDatos.SelectCommand = comando;
DataSet conjuntoDatos = new DataSet();
adaptadorDatos.Fill(conjuntoDatos,"alumno");
dataGrid1.DataSource = conjuntoDatos.Tables[0];
conexionDatos.Close();
}
Código 4. Código para el evento Click del botón de comando de nuestro ejemplo.
Como en este caso estamos usando objetos y métodos para un proveedor tipo
SqlClient es necesario añadir en la sección de inclusión de espacios de nombre la
siguiente sentencia:
using System.Data.SqlClient;
La presente práctica trata sobre la creación de una aplicación Windows que usará
un proveedor de datos OleDB para realizar un acceso de no conexión, similar al
mostrado en el ejemplo previo, a una tabla creada en Microsoft Access.
III.- Desarrollo
1.- Cargue el entorno de desarrollo de Microsoft Visual Studio .NET.
2.- Seleccione el botón New Project de la ventana Start Page.
6 de 10
3.- En la ventana New Project escriba el nombre de su proyecto e indique el
nombre de la carpeta donde lo almacenará en su disco. Usted puede indicar el
nombre de proyecto y carpeta que desee.
Nota: No olvide seleccionar Visual C# Projects en el tipo de proyecto (sección
Project Types de la ventana New Projects). Así mismo, asegúrese que la
plantilla(Template) para el proyecto sea una aplicación Windows (Windows
Application).
4.- Haga uso de la barra de herramientas (Toolbox) del entorno de desarrollo.
Seleccione y enseguida arrastre hasta el área de diseño del formulario los
componentes gráficos dataGrid y Button, como se ilustra en la Figura 4.
5.- A continuación debemos indicar a nuestra aplicación que deseamos tener
acceso a las clases para manipular un proveedor de datos con tecnología OLEDB,
para ello debemos usar el espacio de nombres System.Data.OleDb. Para lo
anterior seleccione el formulario en modo de diseño, pulse sobre algún punto del
área de edición del mismo el botón secundario del ratón y seleccione la opción
“View Code” del menú emergente.
6.- Añada la línea
using System.Data.OleDb;
a la sección de adición de espacios de nombre del código de su aplicación. La lista
de los espacios de nombre incluidos tendría que ser la siguiente:
using
using
using
using
using
using
using
System;
System.Drawing;
System.Collections;
System.ComponentModel;
System.Windows.Forms;
System.Data;
System.Data.OleDb;
7.- Escriba el código para el evento Click del botón “Llenar datos”. Al pulsarlo
nuestro programa tendrá el acceso a una tabla llamada alumno de una base de
datos creada en Microsoft Access, tomará todos los datos de la misma y los
vinculará con un componente dataGrid. Escriba el código fuente mostrado en
Código 5.
7 de 10
private void button2_Click(object sender, System.EventArgs e)
{
string cadComandoSQL = "SELECT * FROM alumno";
OleDbDataAdapter adaptadorDatos = new OleDbDataAdapter();
OleDbCommand comando = new OleDbCommand();
OleDbCommand comandoActualizar = new OleDbCommand();
OleDbConnection conexionDatos = new OleDbConnection();
comandoActualizar.Connection = conexionDatos;
conexionDatos.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;;Password=;User ID=Admin;Data
Source=C:\\DocsVic\\pracsFIME.mdb";
conexionDatos.Open();
comando.Connection = conexionDatos;
comando.CommandText = cadComandoSQL.Trim();
adaptadorDatos.SelectCommand = comando;
DataSet conjuntoDatos = new DataSet();
adaptadorDatos.Fill(conjuntoDatos,"alumno");
dataGrid1.DataSource = conjuntoDatos.Tables[0];
conexionDatos.Close();
}
Código 5. Código para el evento Click del botón de comando de nuestro ejemplo. El código que está
resaltado en color azul es escrito de manera automática por Visual C# y usted no debe cambiarlo, es posible que
el nombre de la función no coincida, en cuyo caso no se afecta al desempeño del método. El código resaltado en
color amarillo puede cambiar dependiendo la carpeta de su sistema de disco donde almacene la base de datos que
creará en los siguientes pasos de esta práctica.
8.- Guarde todos los cambios en su proyecto, para ello pulse Ctrl+Shift+S o siga
la secuencia File+Save All.
9.- La parte siguiente consiste en crear una base de datos en Microsoft Access.
10.- Cargue el Microsoft Access.
11.- Seleccione la opción “Nuevo” del menú “Archivo”.
12.- Seleccione la opción “Base de datos en blanco…”.
13.- En la ventana “Archivo nueva base de datos” escriba como nombre de la base
de datos pracsFIME. Vea Figura 5.
8 de 10
Figura 5. Aspecto de diseño de la tabla alumno de la base de datos pracsFIME. Las longitudes de
los campos son 9, 15, y 15, para los campos nocta, nombre y apellido, respectivamente, el campo
edad es un entero.
14.- Guarde la estructura de la tabla.
15.- Añada algunos registros de datos a la misma.
16.- Seleccione ahora el entorno de desarrollo de Visual Studio .NET, ejecute su
aplicación.
17.- Pulse el botón “Llenar datos”. El dataGrid debe mostrar los datos insertados
previamente en Microsoft Access.
18.- Añada un nuevo registro en el dataGrid.
19.- Cierre su aplicación.
20.- Vuelva a cagar la aplicación y pulse el botón “Llenar datos”.
21.- ¿Se despliega el registro que había añadido previamente?
22.- Dé una explicación de por qué ocurre eso.
23.- Describa cuál o cuales son las diferencias más significativas, en cuanto a la
escritura de código, que deben realizarse para hacer una conexión de datos
usando el proveedor de datos SqlClient con respecto al proveedor OleDB.
9 de 10
IV.- Observaciones y/o conclusiones
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
V.- Referencias
*** Pendiente.
10 de 10
Descargar