PDF de programación - Acceso a Datos ADO.NET

Imágen de pdf Acceso a Datos ADO.NET

Acceso a Datos ADO.NETgráfica de visualizaciones

Publicado el 5 de Mayo del 2019
1.895 visualizaciones desde el 5 de Mayo del 2019
475,2 KB
72 paginas
Creado hace 14a (17/03/2010)
Acceso a Datos
ADO.NET
ADO.NET

Integración de Sistemas
Parte II. Diseño e implementación de
aplicaciones Web con .NET

Indice

 Evolución histórica del acceso a datos

 Conceptos básicos de ADO.NET

 Generic Factory Model

 Entorno conectado

 Entorno desconectado

 Anexo I. Correspondencia entre tipos C#, SQL estándar y SQL Server

Evolución histórica de acceso a datos

 Inicialmente, no había interfaces comunes de acceso a

datos
 Cada proveedor proporcionaba un API (u otros mecanismos)

 Cambiar SGBD tenía un coste muy alto
 Cambiar SGBD tenía un coste muy alto

Evolución histórica de acceso a datos
ODBC (Open DataBase Connectivity)

 Estándar de acceso a BD desarrollado por Microsoft

 Proporciona interfaz única para acceder a varios SGBD

 Modelo de drivers para acceder datos

 Cualquier proveedor puede escribir un driver ODBC
 Cualquier proveedor puede escribir un driver ODBC

⇒ Es posible escribir aplicación independiente del SGBD

 Soportado por la mayoría de los SGBD

 No incluye soporte para algunos tipos incluidos en SQL:1999 y

SQL:2003

Evolución histórica de acceso a datos
OLE-DB (Object Linking and Embedding Database)

 Desarrollado por Microsoft para mejorar ODBC

 Proporciona un API más limpia y acceso a datos más eficiente que

ODBC

 OLE-DB Providers

 Proporcionan acceso a un SGBD

 Inicialmente: ODBC

 Posteriormente se añadiron otros

 OLE-DB Consumers

 Se comunican con los “proveedores”

Evolución histórica de acceso a datos
OLE-DB (Object Linking and Embedding Database)

Arquitectura OLE-DB

Extraído de: McClure, W. B. (2005). Professional ADO. NET 2:
Programming with SQL Server 2005, Oracle, and MySQL: Wrox.

Evolución histórica de acceso a datos
Data Access Consumers

 Desde lenguajes que utilizan punteros, como C o C++ es posible

acceder directamente a las APIs ODBC y OLE-DB

 Para acceder desde otros lenguajes es necesaria una nueva capa

⇒ Aparecen: DAO, RDO, ADO y ADO.NET

Evolución histórica de acceso a datos
Data Access Consumers

 Data Access Objects (DAO)

 Estaba basado en el motor JET, que había sido diseñado para Access

 DAO 1.0 soportaba ODBC y comunicación directa con Access (sin

ODBC)

 DAO 2.0 se amplió para soportar OLE-DB

 Problema: sólo puede hablar con el motor JET

⇒ Menor rendimiento

Evolución histórica de acceso a datos
Data Access Consumers

 Remote Data Objects (RDO)

 Solución de Microsoft al bajo rendimiento de DAO

 Para comunicarse con BD distintas de Access, RDO no usa el motor

JET como DAO. Se comunica con el nivel ODBC directamente

 Puede usar cursores del lado del cliente para navegar los registros, en

contraposición a la necesidad de DAO de usar cursores del lado de
servidor

⇒ Mejor rendimiento

Evolución histórica de acceso a datos
Data Access Consumers

 ActiveX Data Objects (ADO)

 Propuesto como sustituto de DAO y RDO

 Se pretendía que sirviese para acceder a cualquier tipo de datos (desde

BD a e-mail, ficheros de texto plano y hojas de cálculo)

 Soporta comunicación con fuentes de datos a través de ODBC y OLE-

DB

 Introdujo el modelo de proveedores (provider model), que permitió a

los vendedores de software crear sus propios proveedores

Evolución histórica de acceso a datos
Data Access Consumers

 ActiveX Data Objects (ADO)

Arquitectura ADO

Extraído de: McClure, W. B. (2005). Professional ADO. NET 2:
Programming with SQL Server 2005, Oracle, and MySQL: Wrox.

Evolución histórica de acceso a datos
Data Access Consumers

 ActiveX Data Objects (ADO)

 Características

 Modelo más limpio que sus predecesores

 Batch updating

 Disconnected Data Access

 Multiple Recordsets

 Inconvenientes

 El trabajo en modo desconectado era engorroso

 No tenía pool de conexiones

 Diseño no correctamente factorizado

Conceptos básicos de ADO.NET
Arquitectura del .NET Framework

K
K
D
D
S
S


k
k
r
r
o
o
w
w
e
e
m
m
a
a
r
r
F
F
T
T
E
E
N
N



.
.



k
r
o
w
e
m
a
r
F
T
E
N



.

l

e
b
a
t
u
b
i
r
t
s
d
e
R

i



k
k
r
r
o
o
w
w
e
e
m
m
a
a
r
r
F
F
T
T
E
E
N
N



.
.

y
r
a
r
b
L
s
s
a
C



i

l

VB

C++

C#

J#



Common Language Specification

LINQ

ADO.NET Entity Framework

WPF

WCF

WF

Card Space

ADO.NET

WinForms

ASP.NET

Base Class Library

Common Language Runtime

Windows

COM+ Services

Conceptos básicos de ADO.NET

 Con la versión del .NET Framework, Microsoft introdujo un nuevo

modelo de acceso a datos, llamado ADO.NET

 ADO.NET no es ActiveX

 Es un modelo completamente nuevo (comparte funcionalidad pero no la

jerarquía de clases)
jerarquía de clases)

 Soporta comunicación con fuentes de datos a través de ODBC y OLE-

DB

 Además, ofrece la opción de usar proveedores de datos específicos de

un SGBD

 Gran rendimiento al ser capaces de utilizar optimizaciones específicas

⇒ Permite conectarse a casi cualquier BD existente

Conceptos básicos de ADO.NET
Data Providers

OLE DB .NET
Data Provider

OLE DB
Provider

ODBC .NET
Data Provider

ODBC
Driver

Cliente

SQL .NET

Data Provider

Oracle .NET

Data Provider



Otra BD

Otra BD

SQL SERVER

Oracle SERVER

Proveedores de acceso a datos (data providers) en ADO.NET

Conceptos básicos de ADO.NET
Data Providers

 Proveedores de acceso a datos en 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
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 o superior y MS Access
 System.Data.SqlClient

 Oracle

 Acceso nativo a Oracle Server
 System.Data.OracleClient

 Otros provistos por terceros

 MySQL, PostgreSQL, DB2, etc.

Conceptos básicos de ADO.NET

 Novedades

 Acceso a datos desconectado real

 Pool de conexiones

Conceptos básicos de ADO.NET

 Connection: responsable de establecer y mantener la conexión a la fuente de

datos, junto con cualquier información específica de la conexión

 Command: almacena la consulta que va a ser enviada a la fuente de datos y

cualquier parámetro aplicable

DataReader: proporciona capacidad de lectura rápida, hacia adelante (forward-
 DataReader: proporciona capacidad de lectura rápida, hacia adelante (forward-
only) para iterar sobre los registros rápidamente

 DataSet: proporciona mecanismo de almacenamiento para datos

desconectados.

 Nunca se comunica con ninguna fuente de datos e ignora la fuente de los datos usada para

rellenarlo (populate)

 DataAdapter: es lo que relaciona el DataSet y la fuente de datos. Es

responsable de:

 Recuperar los datos desde el objeto Command y rellenar el DataSet con los datos recuperados

 Persistir los cambios realizados en el DataSet en la fuente de datos.

Conceptos básicos de ADO.NET

Base de Datos

XxxConnection
XxxConnection

XxxCommand

XxxDataAdapter

DataSet

XxxDataReader

Conceptos básicos de ADO.NET

Conceptos básicos de ADO.NET
Entornos de Acceso a Datos

 Conectado:

 forward-only

 Aplicación realiza una consulta y lee los datos conforme los va procesando

 Cursor unidireccional

 Objeto DataReader

 Desconectado

 La aplicación ejecuta la consulta y almacena los resultados de la misma para

procesarlos después

 Minimiza el tiempo de conexión a la base de datos

 Objetos lightweight

 Objetos DataSet y DataAdapter

Conceptos básicos de ADO.NET
Namespace System.Data

 Organiza el modelo de objetos
 Incluye:

 System.Data

 System.Data.OleDb

 System.Data.Odbc

 System.Data.SqlClient

 ...

Conceptos básicos de ADO.NET
Ejemplo de Creación de Conexiones

using System;
using System.Data.SqlClient;
namespace Es.UDC.DotNet.ADODotNetTutorial
{

class SqlDataBaseConnection
{

public static void Main(string[] args)
{{

SqlConnection connection = null;
try
{

// The connection string should be read from a configuration

// file...

String connectionString = "Data Source=localhost\\SQLExpress;" +

"Initial Catalog=ADOTutorial;User ID=ADOTutorial;" +

"Password=ADOTutorial";

// Create the connection ...

connection = new SqlConnection();

connection.ConnectionString = connectionString;

Conceptos básicos de ADO.NET
Ejemplo de Creación de Conexiones

// Create the command and set properties ...
SqlCommand command = new SqlCommand();
command.CommandText = "SELECT * FROM Account";
command.Connection = connection;
// Open the connection ...
connection.Open();
// Execute the command ...
SqlDataReader sqlDataReader = command.ExecuteReader();
// Close the SqlDataReader ...
sqlDataReader.Close();
sqlDataReader.Close();
Console.WriteLine("DataBaseConnection is OK");

}
catch (Exception e)
{

Console.WriteLine("Message: " + e.Message);
Console.WriteLine("StackTrace: " + e.StackTrace);

}
finally
{

// Ensures connection is closed
if (connection != null) connection.Close();

}

}

}

}

Conceptos básicos de ADO.NET
Namespace System.Data

Independencia del proveedor sin Generic Factory Model
Extraído de: McClure, W. B. (2005). Professional ADO. NET 2:
Programming with SQL Server 2005, Oracle, and MySQL: Wrox.

Conceptos básicos de ADO.NET
Namespace System.Data

 Todos los Data Providers deben implementar una serie de

interfaces

 System.Data.IDbConnection

 System.Data.IDbCommand

 System.Data.IDbDataParameter

 System.Data.IDbTransaction

 System.Data.IDataReader

 System.Data.IDataAdapter

 ...

ADO.NET 2.0

 100% compatible con cualquier código escrito en ADO.NET 1.0 ;-)

 Mejora la serialización XML y el pool de conexiones
 insert permite añadir varias filas en una única instrucción

 Reducción de código necesario para efectuar tareas comunes
 Reducción de código necesario para efectuar tareas comunes

 Posibilidad de escribir código de acceso a BD independiente del

proveedor

⇒ Generic Factory Model

Generic Factory Model

Independencia del proveedor con Generic Factory Model
Extraí
  • Links de descarga
http://lwp-l.com/pdf15859

Comentarios de: Acceso a Datos ADO.NET (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad