04 Módulo Acceso Datos .NET

32
Base de Datos Prof: Emmanuel Hidalgo Cordero Tomando del material de Desarrollador 5 Estrellas de Microsoft ADO.NET

description

afsffasdf dfa

Transcript of 04 Módulo Acceso Datos .NET

Page 1: 04 Módulo Acceso Datos .NET

Base de Datos

Prof: Emmanuel Hidalgo Cordero

Tomando del material de Desarrollador 5 Estrellas de Microsoft

ADO.NET

Page 2: 04 Módulo Acceso Datos .NET

Temas Ubicación en Class Library

Escenarios de Conexión

Arquitectura de ADO.NET

Proveedores de Acceso

Clases más comunes

Data Sets

ADO.net vs ADO

Accediendo a Datos – Escenario Conectado

Accediendo a Datos – Escenario Desconectado

Xml

Generics

Page 3: 04 Módulo Acceso Datos .NET

Acceso a Datos: ADO.NET

System.Data

OleDb

SqlClient

OracleClient

Common

Odbc SqlTypes

System.Xml

Serialization

XPath

XSLT

Schema

Page 4: 04 Módulo Acceso Datos .NET

Acceso a Bases de Datos Relacionales Escenario Conectado

Un entorno conectado es uno en el cual los usuarios están constantemente conectados a la fuente de datos

Ventajas:

Mayor seguridad

Mejor control de concurrencia

Los datos se mantienen actualizados

Desventajas:

Se requiere una conexión constante (consume recursos del servidor)

Escalabilidad(cantidad de conexiones)

Page 5: 04 Módulo Acceso Datos .NET

En un entorno desconectado, una parte de los datos del repositorio central se copia y modifica en forma local, para luego sincronizarse con éste.

Ventajas

Se puede trabajar en forma independiente

Mayor escalabilidad y performance

Desventajas

Los datos no están sinconizados

Resolución manual de conflictos

Acceso a Bases de Datos Relacionales Escenario Desconectado

Page 6: 04 Módulo Acceso Datos .NET

ADO.NET - Arquitectura

Page 7: 04 Módulo Acceso Datos .NET

ADO.NET- Proveedores de Acceso a Datos

SQL Server/Access (System.Data.SqlClient)

OLE DB (System.Data.OleDb)

ODBC (System.Data.Odbc)

Oracle (System.Data.OracleClient)

Otros provistos por terceros (MySQL, PostgreSQL, DB2, etc..)

Page 8: 04 Módulo Acceso Datos .NET

Base de Datos

XxxConnection

XxxCommand

DataSet XxxDataReader

XxxDataAdapter

Maneja la conección a una base de

datos

Ejecuta comandos contra una base

de datos

Copia local de datos relacionales

Provee acceso a datos

read-only, Forward-only

Intercambia datos entre un dataset

y una base de datos

ADO.NET- Clases más comunes

Page 9: 04 Módulo Acceso Datos .NET

DataSet

DataTable

DataTable

DataRow

DataColumn

Relaciones

Restricciones Esquema XML

ADO.NET- DataSet

Page 10: 04 Módulo Acceso Datos .NET

ADO.NET vs. ADO

Page 11: 04 Módulo Acceso Datos .NET

ADO.NET – Accediendo a datos Conectado

En un escenario conectado, los recursos se mantienen en el servidor hasta que la conexión se cierra

1) Abrir Conexión

2) Ejecutar Comando

3) Procesar Filas en DataReader

4) Cerrar Reader

5) Cerrar Conexión

Page 12: 04 Módulo Acceso Datos .NET

En un escenario desconectado, los recursos no se mantienen en el servidor mientras los datos se procesan

1) Abrir Conexión

2) Llenar DataSet mediante DataAdapter

3) Cerrar Conexión

4) Procesar DataSet

5) Abrir Conexión

6) Actualizar fuente de datos mediante DataAdapter

7) Cerrar Conexión

ADO.NET – Accediendo a datos Desconectado

Page 13: 04 Módulo Acceso Datos .NET

XmlTextWriter

XmlTextReader

<XML>

XmlDocument

DocumentNavigator

XmlReader

XmlValidatingReader XmlNodeReader

ADO.NET - Soporte a XML

Page 14: 04 Módulo Acceso Datos .NET

Generics

Son tipos parametrizados soportados por el CLR

Un tipo parametrizado es aquel que puede definirse sin especificar los tipos de datos de sus parámetros en tiempo de compilación.

Nos dan la posibilidad de declarar clases, estructuras, métodos e interfaces que actuarán uniformemente sobre valores cuyos tipos se desconocen a priori y son recién especificados al momento de su utilización

Page 15: 04 Módulo Acceso Datos .NET

Generics - Ejemplo

Definiendo una clase genérica en C#

Utilizando una clase genérica en C#

public class ClaseGenerica<T>

{

public T atributo;

}

ClaseGenerica <string> g = new ClaseGenerica<string>();

g.atributo = “Un string";

g.atributo = 2; //Genera Error de Compilación

ClaseGenerica<int> g2 = new ClaseGenerica<int>();

g2.atributo = 2; //NO genera error de compilación

Page 16: 04 Módulo Acceso Datos .NET

Generics - Colecciones

Colecciones Genéricas Vs. Colecciones Tradicionales

System.Collections.Generic System.Collections

Comparer<T> Comparer

Dictionary<K,T> HashTable

List<T> ArrayList

Queue<T> Queue

SortedDictionary<K,T> SortedList

Stack<T> Stack

ICollection<T> ICollection

IComparable<T> System.IComparable

IComparer<T> IComparer

IDictionary<K,T> IDictionary

IEnumerable<T> IEnumerable

IEnumerator<T> IEnumerator

IKeyComparer<T> IKeyComparer

IList<T> IList

Page 17: 04 Módulo Acceso Datos .NET

Generics - Colecciones

Sin generics

Con generics

Page 18: 04 Módulo Acceso Datos .NET

Pasos básicos para desarrollar en ADO.NET

SQL Comandos Básico

Clases Básicas

Conexión a base de Datos(Cadena de Conexión)

Transacciones

Page 19: 04 Módulo Acceso Datos .NET

Sql Comandos Básicos

SELECT: recupera datos

FROM: identifica las tablas involucradas

WHERE: criterios opcionales de selección para consulta, modificación y borrado

ORDER BY: criterios opcionales de ordenamiento(ASCENDENTE o DESCENDENTE).

UPDATE: Actualiza filas en una tabla específica

INSERT: inserta filas en una tabla específica

DELETE: borrar filas en una tabla específica

INNER JOIN: operador opcional para mezclar filas de varias tablas.

Page 20: 04 Módulo Acceso Datos .NET

Clases Básicas

Namespace ADO.NET: System.Data

Namespace Sql Server: System.Data.SqlClient

System.Data.SqlClient

SqlConexion

Open

Close

SqlComand

ExecuteDataReader

ExecuteNonQuery

SqlDataReader

GetXXX

Page 21: 04 Módulo Acceso Datos .NET

Ejempplo

Ver código de Ejemplo(Consultar Persona)

Ver código de Ejemplo(Agregar Persona)

Page 22: 04 Módulo Acceso Datos .NET

Conectando a una Base de Datos

Creación de la conexión con la fuente de datos

Para la creación de una conexión en ADO.NET se requiere especificar el valor de la propiedad Connection String

SqlConnection oSQLConn = new SqlConnection();

oSQLConn.ConnectionString = "Data Source=(local);" +

"Initial Catalog=mySQLServerDBName;" +

"Integrated Security=SSPI";

Page 23: 04 Módulo Acceso Datos .NET

Connection String

Es un conjunto de elementos información separadas por PUNTO y COMA(“;”).

Cada elemento son propiedades de la cadena de conexión.

Cada propiedad se especifica de la siguiente forma “key=value”

Page 24: 04 Módulo Acceso Datos .NET

Propiedades Connection String

Data Source: Nombre del Server donde se localiza la fuente de datos.

Initial Catalog: Nombre de la base de datos

Integrated Securiry: Indica si quiere utilizar la cuenta de usuario de Windows donde corre la aplicación, o tambien se puede utilizar un usario y clave de la base de datos para la autenticación.

Connection Time out: Indica cuanto tiempo su código esperación antes de dar un error,está en segundos.

Page 25: 04 Módulo Acceso Datos .NET

Parametrizar cadena de Conexión

Es deseable poder modificar la cadena de conexión sin tener que recompilar el código.

Para aplicaciónes Windows Forms la cadena de conexión se guarda en la sección <connectionString> del archivo de Configuración de la aplicación “app.config”

Page 26: 04 Módulo Acceso Datos .NET

Sección conenntionString <?xml version="1.0" encoding="utf-8" ?>

<configuration>

<appSettings>

<add key="llave" value="es-CR"/>

</appSettings>

<connectionStrings>

<add name="cadenaConexion"

connectionString="Data Source=STEFANY1\SQLEXPRESS;Initial Catalog=master;Integrated Security=True"/>

</connectionStrings>

</configuration>

Page 27: 04 Módulo Acceso Datos .NET

Transacciones ¿Qué son?

Es una forma de controlar si una transacciones se ejecuta de forma completa o se descarta por completo. Transacción atómica.

Page 28: 04 Módulo Acceso Datos .NET

Transacciones - ¿Cuándo usarlas?

Cuando se realizan varias tareas de actualización(agregar, modificar o eliminar) y se requiere que cuando alguna falla todos los cambios realizados se deshagan para que no queden datos incompletos.

En general se requiere cuando se necesita que un proceso de genere de forma completa.

Para transacciones de consulta, no es tan necesario utilizar transacciones.

Page 29: 04 Módulo Acceso Datos .NET

Transacciones ¿Cómo hacer transacciones?

1.Crear un objeto Conection (SqlConnection) y abrir la Conexión

2. Crear un objeto Transaction a partir del método BeginTransacción del objeto Connection.

3. Crear y configurar el objeto Comand.

4. Asignar la transacción al objeto Comand en la propiedad Transaction.

5. Ejecuta comando o comandos

Si todo va bien(ejecutar método Commit del objeto Transactio).

En cado de error o excepción(ejecutar el método RollaBack del objeto Transaction)

Page 30: 04 Módulo Acceso Datos .NET

Transacciones ¿Ejemplo?

Page 31: 04 Módulo Acceso Datos .NET

Transacciones ¿Ejemplo?

Page 32: 04 Módulo Acceso Datos .NET

Transacciones ¿Ejemplo?