108
Ernesto Calvo A. Ernesto Calvo A. ADO .NET Módulo: Aplicaciones centradas en Datos

Cur So Ado Net

Embed Size (px)

Citation preview

Page 1: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

ADO .NET

Módulo: Aplicacionescentradas en Datos

Page 2: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

ADO .NET es la última versión de la tecnología de acceso a datos de Microsoft

Es un conjunto de clases de la librería de clases del .NET Framework que nos permiten interactuar con cualquier tipo de base de datos desde cualquier tipo de aplicación

Introducción

Page 3: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Cómo funciona la programación de bases de datos

Conectar a una base de datos

Solicitar datos específicos

Devolver datos

Transmitir actualizacionesMostrar y modificar

datos

Base de datos

Cerrar la conexión

En muchas aplicaciones, la conexión se cierra después de que el usuario accede a los datos y vuelve a abrirse cuando el usuario

reenvía actualizaciones o realiza más peticiones

Tareas habituales en la programáción de bases de datos

Page 4: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Alamacenes de Datos (Data Storage)

Tipos Datos relacionales

SQL Server, Oracle, Access Datos XML

XML Web service Estructurados, no-jerárquicos

Archivos de extensión CVS (Comma Separated Value), Planillas del Tipo Microsoft Excel

Microsoft Exchange Active Directory

Page 5: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

El entorno conectado

Uno en el cual los usuarios o aplicaciones tienen una conexión con un origen de datos

Page 6: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

El entorno desconectado

Internet es un ejemplo de un entorno desconectado

Los usuarios recogen los datos de un origen de Datos (data source)

Los usuarios modifican los datos localmente sin estar conectados aun origen de datos (data source)

Los actualizan los datos en el origen de datos (data source)

Page 7: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Modelos de aplicaciones con acceso a datos

Evolución

1-Capa(monolitico)

2-Capas

3-Capas N-Capas e Internet

“Fat” Client

“Thin” ClientLogica del clienteLogica de negociosAlamcen de Datos

Page 8: Cur So Ado Net

Una evolución , mas flexible de ADO

Un sistema diseñado para escenarios desconectados

Un modelo de programacion con soporte de XML

Un conjunto de clases,interfaces,estructuras y enumeraciones para manejar los datos dentro del Framework .NET

Definiendo ADO .NET

Page 9: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Arquitectura de ADO.NET

Capa Negocio Capa Datos

Capa Presentación

Windows Forms

Web Forms

Business to Business

Data Object (Class)

DataSet

DataSetDataSet

InternetIntranet Data Adapter

Data Adapter

(BizTalk, for example)

XML

MyApp.Exe

IE

Page 10: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Namespaces relacionados con datos

Los namespaces de datos incluyen:

System.Data

System.Data.SqlClient

System.Data.OracleClient

System.Data.OleDb

System.Data.SqlTypes

System.Xml

Page 11: Cur So Ado Net

El modelo del objeto DataSet

Tablas (coleccion de objetos DataTable)

Relaciones (coleccion de objetos DataRelation )

DataSet

DataRow

DataColumn

DataTable

DataRelation Constraints

Page 12: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Las clases Data Provider .NET

XxxConnection, por ej., SqlConnection

XxxTransaction, por ej., SqlTransaction

XxxError, por ej., SqlError

XxxCommand, por ejemplo, SqlCommand

XxxParameter, por ej., SqlParameter

XxxDataReader, por ej., SqlDataReader

XxxDataAdapter, por ej., SqlDataAdapter

Page 13: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

El modelo de objeto XxxDataAdapter

sp_SELECT

XxxCommand

SelectCommand UpdateCommand InsertCommand DeleteCommandXxxDataAdapter

XxxCommand XxxCommand XxxCommand

XxxConnection

sp_UPDATE sp_INSERT sp_DELETE

XxxDataReader

Page 14: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Evolucion de ADO hacia ADO .NET

Connection

ADO

ADO .NET

Command

Recordset

XxxConnection

XxxCommand

DataSet

XxxTransaction

XxxDataReader

XxxDataAdapter

Page 15: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

ADO .NET y XML

ADO .NET esta fuertemente integrado con XML

2 SQL queryXML Web Services

XML4 DataSetResults3

Data Source

Uso de XML en una aplicacion conectada con ADO .NET

Cargar un XML en el arbol DOM , o usar DataReader

5 Updated XML DataSet 6 SQL updates

Request data1Client

Usando XML en un entorno desconectado con ADO .NET

Page 16: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

¿Qué es SQL?

Sintaxis de instrucciones SQL habituales Para especificar exactamente qué registros deseamos

recuperar, utilizarSELECT Campo FROM Tabla

Para limitar la selección de registros, utilizarSELECT * FROM Tabla WHERE Campo = "String"

Para devolver registros en orden ascendente, utilizarSELECT * FROM Tabla ORDER BY Campo ASC

Ejemplo

Definición: SQL es un lenguaje estándar que ha evolucionado hasta convertirse en el medio de mayor aceptación para realizar consultas y modificar datos en una base de datos

SELECT Nombre FROM Empleados

Page 17: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Módulo: Conectando a un Origen de Datos

Page 18: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Temario

Eligiendo un Data Provider .NET

Manejando una Conexión

Atrapando Excepciones

Agrupamiento de conexiones(Connection Pooling)

Page 19: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

ADO.NET - Data Provider

Page 20: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Cuál Data Provider deberíamos usar ?

SQL Server Data Provider .NET

Oracle Data Provider .NET

OLE DB Data Provider .NET

ODBC Data Provider .NET

Guía para elegir un data provider .NET

Page 21: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Seguridad en las Bases de Datos

Usando seguridad en SQL Server

Usando Autenticación de Windows Server=myServer;Database=myDataBase;Trusted_Connection=True;

Usando Modo Mixto (Autenticacion de Windows y Autenticacion de SQL )

Data Source=myServer;Initial Catalog=myDataBase; User Id=myUser; Password=myPass;

Page 22: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Configurando un string de conexión(connection string) Seteando un Connection String

Provider (solo para OLE DB )

Data Source

Initial Catalog

Integrated Security

User ID/Password

Persist Security Info

Page 23: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Abrir y cerrar una conexión

Usando los métodos Open y Close

Abriendo y Cerrando conexiones explicitamente

Abriendo y Cerrando conexiones implicitamente.

Usando el método Dispose

Usando múltiples conexiones

Page 24: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Manejo estructurado de una excepcion

Sintaxis : Try… Catch… Finally

Sentencia Throw

Excepciones genericas

Page 25: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como manejar múltiples tipos de excepciones

Escribir el código a ejecutar dentro del bloque Try

Escribir una sentencia Catch por cada excepción especifica que deseamos atrapar

Escribir un generico Catch para todas las excepciones

Escribir una sentencia Finally para ejecutar código independientemente que suceda

Finalizar la excepción con un bloque End Try

Page 26: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Agrupamiento de conexiones(Connection Pooling)

Temas:

Agrupamiento de conexiones(connection pooling)?

Como trabaja un agrupamiento de conexiones en SQL Server

OLE DB connection pooling

SQL Server connection pooling

Page 27: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Agrupando conexiones en OLE DB

Deshabilitando el agrupamiento en una conexión OLE DB

Dim cnNorthwind As New OleDbConnection()cnNorthwind.ConnectionString = _“Provider=SQLOLEDB;” & _“Data Source=London;” & _“Integrated Security=SSPI;” & _“OLE DB Services=-4;” & _“Initial Catalog=Northwind;”)

Page 28: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Archivo de Configuración 1: app.config

Es un fichero de configuración, el cual puede usarse en tiempo de ejecución para recuperar ciertos valores, los cuales puedes modificar una vez que el proyecto esté compilado

1.- Agregar un archivo app.config al proyecto2.- Agregar un bloque <appSettings> al final y configurarlo3.- Seleccionar una clase o un Form 4.- Cargar el namespace: Imports System.Configuration5.- Leer valor: Cad = ConfigurationManager.AppSettings("miConexion")

Page 29: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Archivo de Configuración 2: app.config

<?xml version="1.0" encoding="utf-8" ?><configuration>……</system.diagnostics><appSettings>

<add key ="miConexion" value = "Server=miServer;DataBase=miBD;Integrated Security=True"/>

<add key ="comision" value ="10" /></appSettings></configuration>

Imports System.Configuration

Public Function Conecta() As SqlConnectionDim cad As String = ConfigurationManager.AppSettings("miConexion")Dim oCn As New SqlConnection(cad)Return oCn

End Function

Page 30: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Módulo:Trabajando con conexiones a BD

Page 31: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Temario

Construyendo Objetos Command

Ejecutando Command que retornan un solo valor

Ejecutando Command que devuelven un conjunto de filas

Ejecutar Command Compuesto por varias sentencias SQL

Definiendo datos usando DDL (Data Definition Language)

Manipulando datos usando DML(Data Manipulation Language)

Usando Transacciones

Page 32: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

El Objeto Command

Un objeto command es un referencia a una sentencia SQL o a un stored procedure

Propiedades (Name), Connection, CommandType, CommandText,

Parameters Métodos

ExecuteScalar, ExecuteNonQuery, ExecuteReader, ExecuteXmlReader

Ejemplo: Creando un SqlCommandDim cmCategories As new SqlCommand ( _

"SELECT * FROM Categories", cnNorthwind)

Page 33: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como crear un objeto Command Object

Server Explorer

View, Server Explorer (Ctrl+Alt+S)

Crear Store Procedures

Drag ‘n drop stored procedure

SQL Management Studio

Page 34: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Qué son los Parámetros (Command)

Introducción Las sentencias SQL y los stored procedures tienen

parametros de entrada(input), salida(output) y valores de retorno(return value)

A través de la colección parameters de los objetos command podemos configurar, dando valores y recuperar estos parametros

SqlParameter, OleDbParameter Propiedades

ParameterName, DbType, Size, Direction

Page 35: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Parametros para un objeto Command

Como definir programaticamente los parámetros

EjemploDim p1 As new SqlParameter(“@CatName”, _

SqlDbType.Char, 15)p1.Direction = ParameterDirection.OutputcmdCountProds.Parameters.Add(p1)

Ejemplocmd.Parameters.AddWithValue("@IdCod", 12)

Page 36: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Ejecutar Command que retornan un solo valor

Porqué retornar un solo valor en un Command?

Como ejecutar un Command que devuelva un solo valor

Como recuperar parametros Output y Return Values

Page 37: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Porqué retornar un solo valor en un Command?

Introducción

ADO .NET es mas eficiente que en ADO, donde se retorna un grupo de registros

Ejemplos

Unidades en stock para un producto en particular

Cuantos productos hay?

COUNT, MAX, MIN, AVERAGE

Page 38: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Ejecutar un Command que devuelve un solo valor

Introducción

ExecuteScalar retorna un valor de tipo Object

EjemplocmProducts.Parameters("@ProdID").Value = 42cnNorthwind.Open()Dim qty As Int16 = cmProducts.ExecuteScalarcnNorthwind.Close()

Page 39: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Recuperar parámetros Output y Return Values

Como leer un parametro Output desde un objeto Commandcmd.Parameters("@CatName").Value

Como obtener un Return Value de un Stored Procedurecmd.Parameters("@RETURN_VALUE").Value

Page 40: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Retornando filas

DataReader

Read-only, forward-only

El método ExecuteReader

Devolviendo un DataReader

Ejemplo: SqlDataReader, OleDbDataReader

Page 41: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.DataReader

Un objeto de este tipo está siempre conectado a la base de datos, hasta que lo cerramos

Es decir, mantiene una conexión abierta mientras trabajemos con él

Sólo permite leer los registros devueltos, secuencialmente

De uno en uno, y siempre hacia delante, por medio de su operación Read

Page 42: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Metodos y propiedades de un objeto DataReader

Método Read

Carga la próxima fila

Devuelve True si la fila existe o False si no hay filas

Método Close

Propiedad Item

Métodos GetXxx , por ej., GetString, GetInt32

Page 43: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Crear un DataReader

Crear y abrir la conexión a base de datos

Crear el DataReader desde un comando

Cerrar el DataReader y la conexión

Dim myCommand As New SqlCommand( "select * from customers", myConnection)Dim myReader As SqlDataReader = myCommand.ExecuteReader()

If Not (myReader Is Nothing) ThenmyReader.Close()

End IfIf myConnection.State = ConnectionState.Open ThenmyConnection.Close()

End If

Page 44: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Porqué usar multiples sentencias SQL?

Performance Grupo de tareas relacionadas Encapsular reglas de negocios Ejemplo

/* a stored procedure with multiple SQL statements */CREATE PROCEDURE dbo.IncreasePricesAS

UPDATE Products SET UnitPrice = UnitPrice * 1.02SELECT ProductName, UnitPrice FROM ProductsSELECT ProductName FROM Products WHERE Discontinued = 0

Page 45: Cur So Ado Net

Como procesar multiples sentencias SQL

Se puede consultar la cantidad de registros afectados de una sentencia DML con la propiedad RecordsAffected

A cada próxima sentencia SELECT se puede acceder con el metodo NextResult

Page 46: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Data Definition Language

Definición

Automatiza tareas de administración de las bases de datos

Sentencias DDL

CREATE, ALTER, DROP, GRANT, DENY, REVOKE

EjemploCREATE PROCEDURE dbo.SummarizeProducts AS

CREATE TABLE ProductSummary(ProductName varchar(40),CategoryName varchar(15))

Page 47: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como ejecutar un comando DDL

Método ExecuteNonQuery

Retorna cantidad de filas afectadas

Page 48: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Manipulando datos usando DML(Data Manipulation Language)

El lenguaje DML (Data Manipulation Language)

Como ejecutar comandos DML

Page 49: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

DML(Data Manipulation Language)

Definición Sentencias que modifican datos en una base de datos

Sentencias DML INSERT, UPDATE, DELETE

Ejemplo

CREATE PROCEDURE dbo.InsertRegion( @RegID int, @RegName nchar(50) )

ASINSERT INTO Region VALUES (@RegID, @RegName)

Page 50: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como ejecutar un comando DML(Data Manipulation Language)

Ejecutar una sentencia DML

Método ExecuteNonQuery

Page 51: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Errores al intentar modificar datos

Errores mas Comunes

Incorrecto nombre de objetos Server no disponible Problemas de integridad en los datos Usar una conexión antes de abrirla Invalido tipo de dato

Page 52: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Transacciones

Temas:

Definir una Transacción

Como se manejan las Transacciones ?

Como trabaja una Transacción

Page 53: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Definir una Transacción?

Transacciones locales y distribuidas

Propiedades ACID Atomicidad (Atomicity) Consistencia(Consistency) Aislamiento(Isolation) Durabilidad(Durability)

Page 54: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como manejar una transaccion usando SQL

Sentencias SQL para transacciones BEGIN TRANS, COMMIT TRANS, ROLLBACK TRANS

Ejemplo

/* Usar Transacciones para asegurar consistencia*/BEGIN TRANSACTIONINSERT INTO Account (AccountID, Amount, DebitCredit)

VALUES (1234, 100, 'debit') INSERT INTO Account (AccountID, Amount, DebitCredit)

VALUES (5678, 100, 'credit') IF (@@ERROR > 0)ROLLBACK TRANSACTION

ELSECOMMIT TRANSACTION

Page 55: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como manejar transacciones usando ADO .NET

XxxConnection, ej., SqlConnection BeginTransaction

XxxTransaction, ej., SqlTransaction Commit Rollback Save (solo en SqlTransaction)

Page 56: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Módulo:Construyendo DataSets

Page 57: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Temario

Construyendo DataSets y DataTables

Enlazando un DataSet a un Control Windows

Creando un DataSet

Definiendo Data Relationships

Modificando Datos en un DataTable

Usando un DataView

Page 58: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

DataSet

Es una representación en memoria de la base de datos completa (múltiples tablas, esquema, relaciones y restricciones)

Además, es desconectado

Una vez que hace la consulta, cierra la conexión con la BD

Contiene una colección de objetos DataTable, los cuales a su vez tienen una colección de DataRow

DataSet DataTable DataRow* *

tablas filas

Page 59: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

DataSets, DataTables, y DataColumns

Server Data Store

Database

Connection Stored Procedure

DataSet

Data Table

Data Table

Page 60: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

DataSet TablesDataTable

System.Data y DataSet

RelationsDataRelation

DataRelation

DataRow(s)

DataColumn

Constraint(s)

DataTable

DataTable

DataView

Page 61: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Base de datos

Objetos comunes de ADO.NET

Connection

Command

DataSet DataReader

DataAdapter

Gestiona la conexión a una base de datos

Ejecuta un comando de consultaen la base de datos

Almacena datos en un caché distinto de la base de datos

Proporciona acceso eficaz a unflujo de datos de sólo lectura

Intercambia datos entre el conjunto de datos y la base de datos

Page 62: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como crear un DataSet, un DataTable, y un DataColumn

Creando un DataSetDim myDataSet As DataSetmyDataSet = New DataSet(“CustomersDataSet”)

Creando un DataTableDim workTable As New DataTable (“Customers”)

Creando un DataColumn y agregarlo a un DataTableDim workCol As DataColumn = workTable.Columns.Add( _“CustID”, GetType (System.Int32)

Page 63: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

DataAdapter

SelectCommandInsertCommand

UpdateCommandDeleteCommand

TableMappings

Database

DataSet

DataAdapter

Page 64: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Cómo utilizar un objeto DataAdapter

Crear un DataAdapter Declarar con la palabra clave Dim Pasar una cadena de consulta y un objeto Connection

como parámetros

Métodos principales de DataAdapter:

El método Fill puebla un conjunto de datos (data set)

El método Update transmite los cambios al almacén de datos

Dim PubsAdapter As New SQLDataAdapter _("Select * from Titles“,PubsSQLConn)

Page 65: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Usando Unique Constraints

Unique constraints

Ejemplo:[Visual Basic]ds.Tables("Product").Columns(“ProductName”).Unique

= True

Page 66: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Usando AutoIncrement (DataColumn)

Definición

Ejemplo:

Dim myColumn As New DataColumn(“ID”, GetType(System.Int32))

With myColumn.AutoIncrement = True.AutoIncrementSeed = 1000.AutoIncrementStep = 10

End With

Page 67: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Creando expresiones

Funciones Aggregate (Sum, Avg, Max, Min, Count, Etc) Usando la propiedad Expression en DataColumn Sintaxis:

DataColumn.Expression =“Expression”

Ejemplo:Dim cPrice As New DataColumn(“Price”, GetType(System.Decimal))Dim cTax As New DataColumn(“Tax”, GetType(System.Decimal))cTax.Expression = "Price * 0.0862"Dim cTotal As New DataColumn(“Total”, GetType(System.Decimal))cTotal.Expression = "Price + Tax"

Page 68: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como enlazar a un dato a un control Windows

Enlace simple y enlace Complejo

Enlace usando herramientas gráficas y programaticamente

Sintaxis:Control.DataBindings.Add( _

“Propiedad del control”, DataSet, “Tabla.Columna")

Ejemplo:TextBox1.DataBindings.Add( _

"Text", dsNorthwind, "Products.ProductID")

Page 69: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Enlazar un DataSet a un DataGridView

El enlace puede ser hecho en tiempo de diseño o programaticamente( por codigo)

Para realizar el enlace de un DataSet a un DataGridViewprogramaticamente:DataGridView1.SetDataBinding(dsNorth, “Suppliers”)

Propiedades:grv.dataSource=dataViewgrv.AutoGenerateColumns = Falsegrv.Columns.Add("IDCodigo", "Codigo")grv.Columns(4).DataPropertyName = "IDCodigo"

Page 70: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Definiendo relaciones entre DataTables

Temas:

Como crear una clave primaria(Primary Key Constraint)

Usando Foreign Key Constraints para restringir acciones

Como crear una Foreign Key Constraint

Objeto DataRelation

Como crear un objeto DataRelation

Como navegar entre Tablas relacionadas

Page 71: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como crear una clave primaria(Primary Key Constraint)

Usando la propiedad PrimaryKey de un DataTable

dtClientes.PrimaryKey= New DataColumn()_ {dtClentes.Columns(“CustomerID”)}

Usando una constraint para crear una primary keyworkTable.Constraints.Add(“PK_Customer”,_

workTable.Columns(“CustomerID”), True)

Definiendo multiples columnas como una primary keyworkTable.PrimaryKey=New DataColumn() _

{workTable.Columns(“CustLName”), _workTable.Columns(“CustFName”)}

Page 72: Cur So Ado Net

Usando Foreign Key Constraints para restringir acciones

Acciones a llevarse a cabo en tablas relacionadas

DeleteRule Descripcion

Cascade Elimina o actualiza filas relacionadas(default).

SetNull Establece los valores de las filas a nulo(DBNull).

SetDefault Establece valores en filas relacionadas con los DefaultValue.

None No lleva a cabo ninguna accion, pero produce una excepcion

Page 73: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Objeto DataRelation

Definición

Un objeto DataRelation puede realizar 2 funciones:

Hace disponibles los registros relacionados a partir del registro de la tabla padre con el que esta trabajando

Valida forzando la integridad referencial

Objetos DataSets y objetos DataRelation

Page 74: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como crear un objeto DataRelation

Ejemplo

With DataSet1.Relations.Add(“FK_CustomersOrders”, _.Tables("Customers").Columns("CustID"), _.Tables("Orders").Columns("CustID"), _True) ‘ademas crea una ForeignKeyConstraint

End With

Page 75: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como navegar entre Tablas relacionadas

El método GetChildRows de un DataRow

Ejemplo:

Dim drCustomer As DataRowDim drOrder As DataRowFor Each drCustomer In

dsNorthwind.Tables(“Customer”).RowsFor Each drOrder In drCustomer.GetChildRows( _

“FK_CustomersOrders”)‘ process row

NextNext

Page 76: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Modificando datos en un DataTable

Temas:

Como insertar un nuevo Registro

Como posicionarse en un registro

Modificando datos en un DataTable

Como eliminar un Registro

Como manejar un evento de un DataTable

Como aceptar o rechazar Cambios

Page 77: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como insertar un nuevo Registro

Creando a nuevo registroDim workRow As DataRow = workTable.NewRow()

Llenando un registroworkRow(“CustLName”)=“Smith”workRow(1)=“Smith”

Agregando un registro a un DataTableworkTable.Rows.Add(workRow)

Creando, llenando, y agregando un registroworkTable.Rows.Add(new Object() {1, “Smith})

Page 78: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Modificando datos en un DataTable

La clase DataRow

Los métodos BeginEdit, EndEdit, y CancelEdit

Ejemplodt.Rows(3).BeginEdit()dt.Rows(3).Items(“FirstName”)=“John”dt.Rows(3).Items(“LastName”)=“Smith”dt.Rows(3).EndEdit()

Page 79: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como eliminar un Registro

El método Remove del objeto DataRowCollection

Ejemplo:workTable.Rows.Remove(workRow)

El método Delete del objeto DataRow

Ejemplo:workRow.Delete

Page 80: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como manejar un evento de un DataTable

Ejemplo:

Private WithEvents dtProducts As DataTablePrivate Sub dtProducts_RowDeleted( _

ByVal sender As Object, _ByVal e As System.Data.DataRowChangeEventArgs) _Handles dtProducts.RowDeleted‘ write code here

End Sub

Eventos del DataTable

Page 81: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como aceptar o rechazar Cambios

Método: AcceptChanges

Propiedad : RowState

Chequeando errores

Page 82: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Usando el objeto DataView

Temas:

El objeto DataView

Como se define un objeto DataView

Ordenar y filtrar un objeto DataTable usando el objetoDataView

Page 83: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Objeto DataView

Crea múltiples vistas de los objetos DataTable Vinculable a controles Propiedades importantes:

Item: Obtiene una fila de una tabla determinada Table: Obtiene o asigna el objeto DataTable Sort: obtiene o asigna la/s columna/s y el ordenamiento RowFilter: Obtiene o asigna la expresión para filtrar la vista RowStateFilter: Indica o asigna el estado del filtro

None, Unchanged, New, Deleted, ModifiedCurrent, y otros

Page 84: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Objeto DataView

Server Data Store

Database

Connection Stored Procedure

DataSet

Data Table

Data Table

Screenshot

DataView

Page 85: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Como se define un objeto DataView

Creando un DataView usando controles del form

Crear un DataView programaticamenteDim dv As New

DataView(dsNorthwind.Tables(“Products”))dv.Sort = “UnitPrice”dv.RowFilter = “CategoryID > 4”DataGrid1.DataSource = dv

Aplicando un DataView a un DataTableDim dview as new DataView()dview.Table = ds1.Tables(“Categories”)

Page 86: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Ordenar y filtrar un DataTable usando un DataView

Filtrando y ordenando usando el objeto DataViewobjectDataView1.RowStateFilter=DataViewRowState. _

CurrentRows

Filtrando y ordenando usando Default DataViewDataset1.Customers.DefaultView.Sort=“City”

Page 87: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Enlazar un DataView a un Control de Lista

Mostrar un DataView en un ComboBox

Dim dv As DataView = obj.GetDVWith cboUbigeo

.DisplayMember = "UbiDetalle"

.ValueMember = "UbiCodigo"

.DataSource = dvEnd With

Page 88: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Módulo:Crystal Report

Page 89: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Módulo:LINQ y ADO.NET

Page 90: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

ANEXOS

Page 91: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Acceso A Datos Conectado

Acceso A Datos Desconectado

Vista XML De Datos Relacionales

¿Cuándo usar qué?

Page 92: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Proveedores Gestionados Conexión, Transacción

Conectando a un DataSourceIniciando/Finalizando Transacciones

Comando, ParametrosActualizaciones, Selects, DDL

DataReader(FO/RO) Cursor

DataAdapterPone datos en el DatasetLee cambios del DataSet

¿Cuándo usar qué? Acceso A Datos Conectado

Page 93: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

DataSet Datos de Aplicación

Resultados remotosSOAP, WebMethods, Remoting

Cacheo De ResultadosASP.NET Cache

Resultados PersistentesGuardar Datos como XML, Schema como XSD

Interacción Con El UsuarioScrolling, sorting, filtering

DataView, DataViewManagerEnlazar controles Windows

¿Cuándo usar qué? Acceso A Datos Desconectado

Page 94: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

XML

XmlDocumentXmlDataDocumentImplementa nivel core, 1 y 2 del W3C DOM

XPathNavigatorProvee acceso aleatorio de “sólo lectura”

XslTransformSoporta sintaxis XSLT 1.0

Acceso a Datos XML

Page 95: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

ADO.NET – Accediendo a datos Conectado

En un escenario conectado, los recursos se mantienen en el servidorhasta 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 96: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

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

1) Llenar DataSet mediante DataAdapter

2) Procesar DataSet

3) Abrir Conexión

4) Actualizar fuente de datos mediante DataAdapter

5) Cerrar Conexión

ADO.NET – Accediendo a datos Desconectado

Page 97: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

XmlTextWriter

XmlTextReader

<XML>

XmlDocument

DocumentNavigator

XmlReader

XmlValidatingReader XmlNodeReader

ADO.NET - Soporte a XML

Page 98: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

¿Qué es un “Assembly”?

Un Assembly es la unidad mínima de ejecución, distribución, instalación y versionado de aplicaciones .NET

Metadata

Código CompiladoMSIL

Recursos

MiBiblioteca.DLL

Descripción de TiposClases

Clases BaseInterfaces Implementadas

Atributos de las ClasesMétodos de las Clases

NombreVersiónCultura

Manifiesto del Assembly

Otros AssembliesPermisos de Seguridad

Tipos Externos

Page 99: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Assemblies - Aplicaciones .NET

Uno o más Assemblies

Al ejecutar una aplicación, ¿cómo ubico los assembliesnecesarios?

El Class Loader busca en el directorio local (preferido) Global Assembly Cache (GAC)

Diferentes aplicaciones pueden usar diferentes versiones

Actualizaciones más simples

Desinstalación más simple

Page 100: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

.NET Framework Class Library

Conjunto de Tipos básicos (clases, interfaces, etc.) quevienen incluídos en el .NET Framework

Los tipos están organizados en jerarquías lógicas de nombres, denominados NAMESPACES

Los tipos son INDEPENDIENTES del lenguaje de desarrollo

Es extensible y totalmente orientada a objetos

Page 101: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Código Fuente

Cualquier lenguaje.NET

CompiladorAssembly

(MSIL)

Bibliotecao Ejecutable

CLR – Proceso de Compilación

Page 102: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Interoperabilidad

.NET FrameworkServicios Web XML

C#

C++ VB

Otros... .NET

COMCOM INTEROP

Page 103: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

¿Qué es una clase?

Clase Clasificación

Clasificación en base a comportamiento y atributos comunes

Crea un vocabulario

La forma en que nos comunicamos

La forma en que pensamos

Page 104: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

¿Qué es una clase?

Construcción Estática

Describe:

Comportamiento común

Atributos [estado]

Estructura de datos

Incluye:

Datos

Funciones o métodos

Page 105: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Constructor y Destructor

Dos métodos de las clases

Existen por defecto

Constructor, inicializa valores

Destructor, libera recursos al finalizar la vida de una instancia de una clase creada en memoria

Existen constructores y destructores por defecto

Page 106: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

¿Qué es un objeto?

Page 107: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

Instancia de una clase

Un objeto posee:

Identidad: Relación única entre el objeto del modelo y el ente de la realidad que representa. Se implementa a través de un id único en el modelo.

Comportamiento: Resuelve un conjunto particular de problemas a través de su protocolo.

Estado: Almacena informaciónFijaVariable

¿Qué es un objeto?

Page 108: Cur So Ado Net

Ernesto Calvo A.

Ernesto Calvo A.

[email protected]

PMP Ernesto Calvo A.

FIN