Unidad 6.- Acceso a datos desde C# .NET
Autor:
Dr. Ramón Roque Hernández
http://ramonroque.com/Materias/POOTec.htm
[email protected]
Colaborador:
Ing. Bruno López Takeyas, M.C.
www.itnuevolaredo.edu.mx/takeyas
[email protected]
Arquitectura Programas - Datos
20/11/2014
1
20/11/2014
ADO.NET
(ActiveX Data Objects .NET)
Componente de la plataforma .NET que permite
acceder a datos desde un programa
Es un conjunto de clases,
interfaces, estructuras y
enumeraciones que permiten trabajar de manera
conectada o desconectada con los datos
ADO.NET puede
ser utilizado desde
cualquier
lenguaje .NET
ADO.NET es la nueva versión de ADO, creada
totalmente a partir de cero.
Las clases de ADO.NET
ADO.NET es un conjunto de clases pertenecientes al
espacio de nombres System.Data:
System.Data
System.Data.Common
System.Data.OleDB
System.Data.SqlClient
Conjunto de
componentes para
distribuidas de uso compartido de datos.
crear
aplicaciones
Los componentes están diseñados para separar el acceso a
los datos de la manipulación de los mismos.
2
Arquitectura Framework .NET
Evolución histórica
ODBC (Open DataBase Connectivity)
Interoperatibilidad con amplio rango de SGBD
API acceso ampliamente aceptada
Usa SQL como lenguaje de acceso de datos
DAO (Data Access Objects)
Interfase de programación para bases de datos
JET/ISAM (p. ejem. Access)
20/11/2014
3
Evolución histórica
RDO (Remote Data Objects)
Estrechamente ligado a ODBC
Orientada a aplicaciones cliente/servidor
OLE DB (Object Linking and Embedding for Databases)
No restringido a acceso de datos relacionales
No limitado a SQL como lenguaje de recuperación de datos
Tecnología desarrollada por Microsoft
Construido sobre COM (Component Object Model)
Proporciona una interfase a bajo nivel en C++
Evolución histórica
ADO (ActiveX Data Objects)
Ofrece una interfase orientada a objetos
Proporciona un modelo de programación para OLE DB
accesible desde lenguajes diferentes a C++
Diseñado como modelo conectado, altamente acoplado
Indicado para arquitecturas cliente/servidor
20/11/2014
4
Proveedores de acceso a datos
Proveedores de acceso a datos
Conjunto de clases que implementan una serie de interfaces comunes
ADO.NET
OLE DB
Acceso vía protocolo OLE DB a cualquier fuente de datos que lo soporte
System.Data.OleDb
ODBC
Acceso vía protocolo ODBC a cualquier fuente de datos que lo soporte
System.Data.Odbc
SQL Server
Acceso nativo a MS SQL Server 7.0 ó superior y MS Access
System.Data.SqlClient
Oracle
Acceso nativo a Oracle Server
System.Data.OracleClient
Otros provistos por terceros
MySQL, PostgreeSQL, DB2, etc.
20/11/2014
5
Proveedores de acceso a datos
Componentes de ADO.NET
Connection (conexión)
Command (órdenes)
DataReader (lector de datos)
DataAdapter (adaptador de datos)
20/11/2014
6
Datos conectados
Objetos del modelo conectado
Connection (conexión)
Representa una conexión a la BD
Permite abrir y cerrar la conexión a la BD
Command (comando)
Representa una vía para representar sentencias SQL a la
BD
Ejemplo: Select, Insert, Delete, Update
DataReader (lector de datos)
Almacén temporal de datos, de sólo lectura y sólo hacia
adelante
20/11/2014
7
Modelo conectado
Datos desconectados
20/11/2014
8
Objetos del modelo desconectado
DataAdapter (adaptador de datos)
Conecta el programa con la BD, realiza consultas, llena
los DataSet y sincroniza los cambios en la BD
Es un mediador entre el DataSet y la BD
DataSet (conjunto de datos)
Es una estructura para almacenar datos
Es una “copia en memoria local” de una porción de la BD
Se encuentra en la memoria del cliente
Compatible con las BD relacionales (almacena datos en
forma de tablas)
Modelo desconectado
20/11/2014
9
ADO.NET
No depende de conexiones continuamente activas, esto
es, las aplicaciones se conectan a la BD sólo durante el
tiempo necesario para consultar o actualizar datos.
Las interacciones con la BD se realizan mediante
órdenes para acceso a los datos.
Los datos requeridos normalmente se almacenan en
memoria caché en conjunto de datos, lo que permite
trabajar sin conexión sobre una copia temporal de los
datos.
XML
En ADO.NET, el formato de transferencia es XML.
La
representación de datos XML no utiliza
información binaria, sino se basa en texto.
Muchos servidores bloquean la información binaria.
Cuando se manejan datos en formato de texto, se
pueden enviar mediante cualquier protocolo, como
HTTP.
20/11/2014
10
ADO.NET y XML
20/11/2014
11
Arquitectura
20/11/2014
12
SQL (Structured Query Language)
1. Lenguaje que permite manipular datos mediante el
DML (Data Manipulation Language):
Obtener datos almacenados en las tablas
Insertar, borrar o actualizar datos de las tablas
2. Definir elementos mediante el DDL (Data Definition
Language):
Crear, borrar, modificar tablas, relaciones, restricciones,
etc.
Sentencias de SQL
Permiten consultar datos de las tablas.
Típicamente consisten de 3 partes:
SELECT [Nombres de los campos]
FROM [Nombre de la(s) tabla(s)]
WHERE [Condición(es) de filtrado de
datos]
20/11/2014
13
Ejemplo de SQL
20/11/2014
14
Videos consultas SQL
Consultas simples SQL - La sentencia SELECT
(http://www.youtube.com/watch?v=IbafcdsR1YA&feat
ure=related)
Consultas simples SQL - La clausula WHERE
(http://www.youtube.com/watch?v=htajN9wZFYk&fe
ature=related)
El objeto Connection
Para conectarse a una BD, ADO.NET proporciona el
objeto Connection.
Métodos más usados:
Open().- Abre la conexión. Requiere una cadena de
tipo string que describa:
El tipo de la BD
La ubicación
Autenticación (si requiere)
Close().- Cierra la conexión previamente abierta.
20/11/2014
15
Connection
Tipo de base de datos Objeto Connection
SQL Server
OLE DB
ODBC
Oracle
SqlConnection
OleDbConnection
OdbcConnection
OracleConnection
Ejemplo:
using System.Data.OleDb;
OledbConnection Conexión = new OleDbConnection(CadenaConexión);
Crear una BD en Microsoft Access
Crear la BDAlumnos.accdb en Microsoft Access y la
tabla TablaAlumnos con los siguientes campos:
Campo
Tipo
Clave
Texto(9)
Nombre
Texto
Semestre
Número (entero)
Promedio Número (real con 2 decimales)
Insértele algunos registros
20/11/2014
16
Ejemplo de una conexión con una
BD de Microsoft Access
using System.Data.OleDb; // Para uso de
la base de datos en Access
private OleDbConnection Conexion; //
Declaración de la conexión
// Declaración de la cadena de conexión
string CadenaConexion =
@"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=C:\DATOS\BDAlumnos.accdb";
Conexion = new OleDbConnection(CadenaConexion);
El objeto Comand
Después de establecer la conexión con la BD, se usa el
objeto Command para ejecutar sentencias SQL y devolver
los resultados.
OleDbCommand.- Datos compatibles con OleDb
OdbcCommand.- Datos compatibles con Odbc
SqlCommand.- Datos compatibles con SQL Server
OracleCommand.- Datos compatibles con Oracle
Ejemplo:
OleDbCommand Comando = new
OleDbCommand(“SELECT NoCtrl, Nombre FROM
TablaAlumnos WHERE Semestre=8”,Conexión);
20/11/2014
17
Ejemplo de uso del objeto
Command
// Declaración de la consulta
string Consulta = "SELECT * FROM
TablaAlumnos";
// Declaración del comando de consulta en
la conexión con la BD
Comando = new OleDbCommand(Consulta,
Conexion);
El objeto DataReader
Se usa solamente para leer datos de una BD.
OleDbDataReader.- Datos compatibles con OleDb
SqlDataReader.- Datos compatibles con SQL Server
20/11/2014
18
Ejemplo de uso del DataReader
// Abrir la BD
Conexion.Open();
// Ejecutar el comando
OleDbDataReader Lector = Comando.ExecuteReader();
while (Lector.Read())
{
Console.WriteLine(Lector.GetString(0) + " " +
Lector.GetString(1)+" "+Lector.GetValue(2).ToString());
}
// Cerrar la lectura
Lector.Close();
Lector = null;
class BaseDatosAlumnos
{
private OleDbConnection Conexion; // Declaración de la conexión con la BD
private OleDbCommand Comando; // Declaración del comando con sentencias SQL
private OleDbDataReader Lector; // Declaración del lector de datos
public void LeerDeBaseDeDatos()
{
}
// Declaración de la cadena de conexión
string CadenaConexion = @"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=G:\DATOS\takeyas\Apuntes\POO\Programas\06.- Bases de datos\BD\BDAlumnos.accdb";
Conexion = new OleDbConnection(CadenaConexion); // Crear la conexión con la BD
string Consulta = "SELECT * FROM TablaAlumnos"; // Declaración de la consulta
Comando = new OleDbCommand(Consulta, Conexion); // Declaración del comando de consulta en la conexión con la BD
Conexion.Open(); // Abrir la BD
Lector = Comando.ExecuteReader(); // Ejecutar el comando lector de datos
while (Lector.Read())
{
}
Console.WriteLine(Lector.GetString(0) + " " + Lector.GetString(1)+" "+Lector.GetValue(2).ToString());
Lector.Close(); // Cerrar el lector de datos
Lector = null;
public void CerrarConexion()
{
}
}
// Verifica si está activa la lectura
if (Lector != null)
Lector.Close();
// Verifica si está abierta la conexión con la BD
if (Conexion != null)
Conexion.Close();
20/11/2014
19
El a
Comentarios de: Unidad 6.- Acceso a datos desde CSharp .NET - Programación Orientada a Objetos en C# (1)