04 Módulo Acceso Datos .NET
-
Upload
jose-manuel-brenes -
Category
Documents
-
view
226 -
download
0
description
Transcript of 04 Módulo Acceso Datos .NET
Base de Datos
Prof: Emmanuel Hidalgo Cordero
Tomando del material de Desarrollador 5 Estrellas de Microsoft
ADO.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
Acceso a Datos: ADO.NET
System.Data
OleDb
SqlClient
OracleClient
Common
Odbc SqlTypes
System.Xml
Serialization
XPath
XSLT
Schema
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)
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
ADO.NET - Arquitectura
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..)
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
DataSet
DataTable
DataTable
DataRow
DataColumn
Relaciones
Restricciones Esquema XML
ADO.NET- DataSet
ADO.NET vs. ADO
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
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
XmlTextWriter
XmlTextReader
<XML>
XmlDocument
DocumentNavigator
XmlReader
XmlValidatingReader XmlNodeReader
ADO.NET - Soporte a XML
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
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
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
Generics - Colecciones
Sin generics
Con generics
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
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.
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
Ejempplo
Ver código de Ejemplo(Consultar Persona)
Ver código de Ejemplo(Agregar Persona)
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";
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”
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.
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”
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>
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.
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.
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)
Transacciones ¿Ejemplo?
Transacciones ¿Ejemplo?
Transacciones ¿Ejemplo?