curso ado net

32
[email protected] - [email protected] [email protected] - [email protected] Acceso a Bases de Acceso a Bases de Datos con Visual Datos con Visual Basic .NET Basic .NET (ADO.NET) (ADO.NET)

Upload: gino-hipolito-vargas

Post on 26-Jun-2015

315 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected]

Acceso a Bases de Acceso a Bases de Datos con Visual Datos con Visual

Basic .NETBasic .NET(ADO.NET)(ADO.NET)

Page 2: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 2

AgendaAgenda

La Arquitectura ADO .NETLa Arquitectura ADO .NET Modo ConectadoModo Conectado

Ejecutando instrucciones SQLEjecutando instrucciones SQL Stored ProceduresStored Procedures TransaccionesTransacciones

Modo DesconectadoModo Desconectado El DataSet y el DataAdapterEl DataSet y el DataAdapter Leyendo y Actualizando DatosLeyendo y Actualizando Datos Relaciones de DatosRelaciones de Datos Sorteando y FiltrandoSorteando y Filtrando

Page 3: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 3

Filosofía ADO. NETFilosofía ADO. NET

Clases de DatosClases de Datos Contenedores de datosContenedores de datos

no saben nada de como obtener los datos de la BDno saben nada de como obtener los datos de la BD Objeto Clave : Objeto Clave :

DataSet = Desconectado y caché en memoriaDataSet = Desconectado y caché en memoria

Clases de Base de DatosClases de Base de Datos Para leer y escribir datos en las fuentes de datosPara leer y escribir datos en las fuentes de datos Proveedores Manejados SQL Server , OLEDB, Oracle Proveedores Manejados SQL Server , OLEDB, Oracle

y Odbcy Odbc Objetos Claves :Objetos Claves :

Connection = Se conecta a la fuentes de datosConnection = Se conecta a la fuentes de datos Command = Ejecuta querys y stored proceduresCommand = Ejecuta querys y stored procedures DataAdapter = Conecta DataSet a la base de datosDataAdapter = Conecta DataSet a la base de datos DataReader = Cursor Forward/only y read/onlyDataReader = Cursor Forward/only y read/only

Page 4: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 4

Arquitectura ADO .NetArquitectura ADO .Net

Page 5: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 5

ADO ADO ADO .NET ADO .NETADO evoluciona hacia ADO .NETADO evoluciona hacia ADO .NET

RecordSetRecordSet DataReaderDataReader

DataAdapterDataAdapter

DataSetDataSet

CommandCommand CommandCommand

ConnectionConnectionConnectionConnection

Page 6: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 6

Objetos provistos por distintos Objetos provistos por distintos proveedores de datos .NETproveedores de datos .NET

Objetos Objetos proveedores proveedores

de .Netde .Net

PropositoProposito Objetos SQL Objetos SQL Server Server

ConnectionConnection Provee conectividad a un origen de Provee conectividad a un origen de datosdatos

SqlConnectionSqlConnection

CommandCommand Provee acceso a comandos de Base Provee acceso a comandos de Base de Datos como Select, Delete, de Datos como Select, Delete, Insert y UpdateInsert y Update

SqlCommandSqlCommand

DataReaderDataReader Provee acceso a datos de solo Provee acceso a datos de solo lectura.lectura.

SqlDataReaderSqlDataReader

DataAdapterDataAdapter Utiliza el objeto Connection para Utiliza el objeto Connection para enlazar un objeto DataSet con un enlazar un objeto DataSet con un Proveedor de Datos. También Proveedor de Datos. También permite actualizar los Datos en el permite actualizar los Datos en el origen a partir de las origen a partir de las modificaciones hechas en el modificaciones hechas en el DataSet.DataSet.

SqlDataAdapterSqlDataAdapter

Page 7: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 7

AgendaAgenda

La Arquitectura ADO .NETLa Arquitectura ADO .NET Modo ConectadoModo Conectado

Ejecutando instrucciones SQLEjecutando instrucciones SQL Stored ProceduresStored Procedures TransaccionesTransacciones

Modo DesconectadoModo Desconectado El DataSet y el DataAdapterEl DataSet y el DataAdapter Leyendo y Actualizando DatosLeyendo y Actualizando Datos Relaciones de DatosRelaciones de Datos Sorteando y FiltrandoSorteando y Filtrando

Page 8: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 8

Conectándose a la Base de DatosConectándose a la Base de Datos Escoja el proveedor de datosEscoja el proveedor de datos

Sql, Oracle, Oledb, Odbc (XXX)Sql, Oracle, Oledb, Odbc (XXX)

Especifique la cadena de conexiónEspecifique la cadena de conexión Cree el objeto tipo XXXConnectionCree el objeto tipo XXXConnection Abra la conexiónAbra la conexión

Dim CadCon As String = “DataSource=LIMASERVER;Dim CadCon As String = “DataSource=LIMASERVER; Initial Catalog=banco;Initial Catalog=banco; Integrated Security=true”Integrated Security=true” Dim Cn As New Dim Cn As New SqlSqlConnection(CadCon)Connection(CadCon)Cn.Open()Cn.Open()....Cn.Close()Cn.Close()

Dim CadCon As String = “DataSource=LIMASERVER;Dim CadCon As String = “DataSource=LIMASERVER; Initial Catalog=banco;Initial Catalog=banco; Integrated Security=true”Integrated Security=true” Dim Cn As New Dim Cn As New SqlSqlConnection(CadCon)Connection(CadCon)Cn.Open()Cn.Open()....Cn.Close()Cn.Close()

Page 9: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 9

Ejecutando instrucciones SQLEjecutando instrucciones SQL

Para ejecutar actualizaciones e instrucciones Para ejecutar actualizaciones e instrucciones createcreate

Consultas de un valorConsultas de un valor (1ra columna de 1ra fila resultante)(1ra columna de 1ra fila resultante)

Dim Strqry As String = “update productos set prec=prec*2”Dim Strqry As String = “update productos set prec=prec*2”Dim Cmd As New SqlCommand(Strqry, Cn)Dim Cmd As New SqlCommand(Strqry, Cn)Dim Nfilas As Integer = Cmd.ExecuteNonQuery()Dim Nfilas As Integer = Cmd.ExecuteNonQuery()

Dim Strqry As String = “update productos set prec=prec*2”Dim Strqry As String = “update productos set prec=prec*2”Dim Cmd As New SqlCommand(Strqry, Cn)Dim Cmd As New SqlCommand(Strqry, Cn)Dim Nfilas As Integer = Cmd.ExecuteNonQuery()Dim Nfilas As Integer = Cmd.ExecuteNonQuery()

Dim Strqry As String = “select count(*) from clientes”Dim Strqry As String = “select count(*) from clientes”Dim Cmd As New SqlCommand(Strqry, Cn)Dim Cmd As New SqlCommand(Strqry, Cn)Dim Ncli As Integer = Ctype(Cmd.ExecuteScalar(),Integer)Dim Ncli As Integer = Ctype(Cmd.ExecuteScalar(),Integer)

Dim Strqry As String = “select count(*) from clientes”Dim Strqry As String = “select count(*) from clientes”Dim Cmd As New SqlCommand(Strqry, Cn)Dim Cmd As New SqlCommand(Strqry, Cn)Dim Ncli As Integer = Ctype(Cmd.ExecuteScalar(),Integer)Dim Ncli As Integer = Ctype(Cmd.ExecuteScalar(),Integer)

Page 10: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 10

El Objeto DataReaderEl Objeto DataReader DataReader provee flujo de datos forward-DataReader provee flujo de datos forward-

only y read-onlyonly y read-only Representa resultados de un selectRepresenta resultados de un select No soporta scrolling ni actualizacionesNo soporta scrolling ni actualizaciones

Se genera con Command.ExecuteReaderSe genera con Command.ExecuteReader

Dim Strqry As String = “select nombre from Dim Strqry As String = “select nombre from contactos”contactos”Dim Cmd As New SqlCommand(Strqry, Cn)Dim Cmd As New SqlCommand(Strqry, Cn)Dim Dr As SqlDataReader = cmd.ExecuteReader()Dim Dr As SqlDataReader = cmd.ExecuteReader()While Dr.Read()While Dr.Read()

Console.WriteLine(Dr.GetString(0))Console.WriteLine(Dr.GetString(0))End WhileEnd WhileDr.Close()Dr.Close()

Dim Strqry As String = “select nombre from Dim Strqry As String = “select nombre from contactos”contactos”Dim Cmd As New SqlCommand(Strqry, Cn)Dim Cmd As New SqlCommand(Strqry, Cn)Dim Dr As SqlDataReader = cmd.ExecuteReader()Dim Dr As SqlDataReader = cmd.ExecuteReader()While Dr.Read()While Dr.Read()

Console.WriteLine(Dr.GetString(0))Console.WriteLine(Dr.GetString(0))End WhileEnd WhileDr.Close()Dr.Close()

Page 11: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 11

AgendaAgenda

La Arquitectura ADO .NETLa Arquitectura ADO .NET Modo ConectadoModo Conectado

Ejecutando instrucciones SQLEjecutando instrucciones SQL

Stored ProceduresStored Procedures TransaccionesTransacciones

Modo DesconectadoModo Desconectado El DataSet y el DataAdapterEl DataSet y el DataAdapter Leyendo y Actualizando DatosLeyendo y Actualizando Datos Relaciones de DatosRelaciones de Datos Sorteando y FiltrandoSorteando y Filtrando

Page 12: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 12

Trabajando con Stored ProceduresTrabajando con Stored Procedures

Creando un SP con Visual Studio .NETCreando un SP con Visual Studio .NET En el menú View, haga click en el Server Explorer o En el menú View, haga click en el Server Explorer o

presione Ctrl+Alt+Spresione Ctrl+Alt+S Crear una conexión de datosCrear una conexión de datos Haga Click en “New Stored Procedure”Haga Click en “New Stored Procedure” Insertar el SQLInsertar el SQL

Creado el objeto CommandCreado el objeto Command El cual se crea automáticamente arrastrando y El cual se crea automáticamente arrastrando y

pegando el SP al Formpegando el SP al Form

cmLogin.CommandText = "dbo.[AuthenticateUser]“cmLogin.CommandText = "dbo.[AuthenticateUser]“cmLogin.CommandType = _ cmLogin.CommandType = _ System.Data.CommandType.StoredProcedureSystem.Data.CommandType.StoredProcedurecmLogin.Connection = Me.cnTaskVisioncmLogin.Connection = Me.cnTaskVision

cmLogin.CommandText = "dbo.[AuthenticateUser]“cmLogin.CommandText = "dbo.[AuthenticateUser]“cmLogin.CommandType = _ cmLogin.CommandType = _ System.Data.CommandType.StoredProcedureSystem.Data.CommandType.StoredProcedurecmLogin.Connection = Me.cnTaskVisioncmLogin.Connection = Me.cnTaskVision

Page 13: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 13

Qué son los Parámetros de Comandos?Qué son los Parámetros de Comandos?

Las sentencias SQL y los stored procedures Las sentencias SQL y los stored procedures pueden tener parámetros de entrada y salida, y pueden tener parámetros de entrada y salida, y un valor de retornoun valor de retorno

Tienen las Propiedades :Tienen las Propiedades : ParameterName, DbType, Size, DirectionParameterName, DbType, Size, Direction

cmLogin.Parameters.Add( _cmLogin.Parameters.Add( _New System.Data.SqlClient.SqlParameter("@UserName", _New System.Data.SqlClient.SqlParameter("@UserName", _System.Data.SqlDbType.VarChar, 16))System.Data.SqlDbType.VarChar, 16))

cmLogin.Parameters.Add( _cmLogin.Parameters.Add( _New System.Data.SqlClient.SqlParameter("@Password", _New System.Data.SqlClient.SqlParameter("@Password", _System.Data.SqlDbType.VarChar, 16)) System.Data.SqlDbType.VarChar, 16))

cmLogin.Parameters.Add( _cmLogin.Parameters.Add( _New System.Data.SqlClient.SqlParameter("@UserName", _New System.Data.SqlClient.SqlParameter("@UserName", _System.Data.SqlDbType.VarChar, 16))System.Data.SqlDbType.VarChar, 16))

cmLogin.Parameters.Add( _cmLogin.Parameters.Add( _New System.Data.SqlClient.SqlParameter("@Password", _New System.Data.SqlClient.SqlParameter("@Password", _System.Data.SqlDbType.VarChar, 16)) System.Data.SqlDbType.VarChar, 16))

Page 14: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 14

Ejecutando el Store ProcedureEjecutando el Store Procedure

Se dan valores a los parámetros de entradaSe dan valores a los parámetros de entradaSe ejecutan con el método ExecuteNonQuery o Se ejecutan con el método ExecuteNonQuery o

ExecuteScalarExecuteScalar

cmLogin.Parameters("@UserName").Value = txtUsuario.TextcmLogin.Parameters("@UserName").Value = txtUsuario.TextcmLogin.Parameters("@Password").Value = cmLogin.Parameters("@Password").Value = txtPassword.TexttxtPassword.TextcnTaskVision.Open()cnTaskVision.Open()UserID = CType(cmLogin.ExecuteScalar(), Integer)UserID = CType(cmLogin.ExecuteScalar(), Integer)cnTaskVision.Close()cnTaskVision.Close()

cmLogin.Parameters("@UserName").Value = txtUsuario.TextcmLogin.Parameters("@UserName").Value = txtUsuario.TextcmLogin.Parameters("@Password").Value = cmLogin.Parameters("@Password").Value = txtPassword.TexttxtPassword.TextcnTaskVision.Open()cnTaskVision.Open()UserID = CType(cmLogin.ExecuteScalar(), Integer)UserID = CType(cmLogin.ExecuteScalar(), Integer)cnTaskVision.Close()cnTaskVision.Close()

Page 15: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 15

AgendaAgenda

La Arquitectura ADO .NETLa Arquitectura ADO .NET Modo ConectadoModo Conectado

Ejecutando instrucciones SQLEjecutando instrucciones SQL Stored ProceduresStored Procedures

TransaccionesTransacciones Modo DesconectadoModo Desconectado

El DataSet y el DataAdapterEl DataSet y el DataAdapter Leyendo y Actualizando DatosLeyendo y Actualizando Datos Relaciones de DatosRelaciones de Datos Sorteando y FiltrandoSorteando y Filtrando

Page 16: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 16

TransaccionesTransacciones

Una transacción es un conjunto de tareas Una transacción es un conjunto de tareas relacionadas que tienen éxito o fallan como relacionadas que tienen éxito o fallan como una unidaduna unidad

Se pueden manejar en la capa de base de Se pueden manejar en la capa de base de datos usando sentencias SQLdatos usando sentencias SQL BEGIN TRANS, COMMIT TRANS, ROLLBACK BEGIN TRANS, COMMIT TRANS, ROLLBACK

TRANSTRANS

O mediante ADO.NET en la capa intermediaO mediante ADO.NET en la capa intermedia

Page 17: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 17

Transacciones con ADO.NETTransacciones con ADO.NET

Dim myTransaction As System.Data.OleDb.OleDbTransactionDim myTransaction As System.Data.OleDb.OleDbTransactionTryTry myConnection.Open() myConnection.Open() myTransaction = myConnection.BeginTransaction myTransaction = myConnection.BeginTransaction Update1.Transaction = myTransaction Update1.Transaction = myTransaction Update2.Transaction = myTransaction Update2.Transaction = myTransaction Update1.ExecuteNonQuery() Update1.ExecuteNonQuery() Update2.ExecuteNonQuery() Update2.ExecuteNonQuery() myTransaction.Commit() myTransaction.Commit()Catch ex As ExceptionCatch ex As Exception myTransaction.Rollback() myTransaction.Rollback()FinallyFinally myConnection.Close() myConnection.Close()End TryEnd Try

Dim myTransaction As System.Data.OleDb.OleDbTransactionDim myTransaction As System.Data.OleDb.OleDbTransactionTryTry myConnection.Open() myConnection.Open() myTransaction = myConnection.BeginTransaction myTransaction = myConnection.BeginTransaction Update1.Transaction = myTransaction Update1.Transaction = myTransaction Update2.Transaction = myTransaction Update2.Transaction = myTransaction Update1.ExecuteNonQuery() Update1.ExecuteNonQuery() Update2.ExecuteNonQuery() Update2.ExecuteNonQuery() myTransaction.Commit() myTransaction.Commit()Catch ex As ExceptionCatch ex As Exception myTransaction.Rollback() myTransaction.Rollback()FinallyFinally myConnection.Close() myConnection.Close()End TryEnd Try

Page 18: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 18

AgendaAgenda

La Arquitectura ADO .NETLa Arquitectura ADO .NET Modo ConectadoModo Conectado

Ejecutando instrucciones SQLEjecutando instrucciones SQL Stored ProceduresStored Procedures TransaccionesTransacciones

Modo DesconectadoModo Desconectado

El DataSet y el DataAdapterEl DataSet y el DataAdapter Leyendo y Actualizando DatosLeyendo y Actualizando Datos Relaciones de DatosRelaciones de Datos Sorteando y FiltrandoSorteando y Filtrando

Page 19: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 19

El Objeto DataSetEl Objeto DataSet

Parecido al ADOParecido al ADORecordSet, pero mas ricoRecordSet, pero mas rico

Vistas Relacionales de dataVistas Relacionales de data Contiene tablas, columnas, Contiene tablas, columnas,

filas, constraints, filas, constraints, vistas y relacionesvistas y relaciones

Modelo DesconectadoModelo Desconectado No conoce de fuentes de datos No conoce de fuentes de datos Indexamiento tipo arrayIndexamiento tipo array Soporta Databinding Soporta Databinding Soporta actualizaciones batchSoporta actualizaciones batch Se conecta a fuente de datos via Se conecta a fuente de datos via

DataAdapterDataAdapter

DataSetDataSet

TablesTables

TableTable

ColumnsColumns

ColumnColumn

ConstraintsConstraints

ConstraintConstraint

RowsRows

RowRow

RelationsRelations

RelationRelation

Page 20: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 20

El DataAdapterEl DataAdapter Sirve de interfase entre una Sirve de interfase entre una

tabla y un Datatabletabla y un Datatable Provee mapeo entre Provee mapeo entre

tablas y columnastablas y columnas Las instrucciones en sus Las instrucciones en sus

objetos Command las puede objetos Command las puede generar automáticamente un generar automáticamente un wizardwizard

Usuarios pueden proveer Usuarios pueden proveer comandos explícitos de comandos explícitos de insert/update/deleteinsert/update/delete Tales como especificar stored Tales como especificar stored

proceduresprocedures

SelectCommand

InsertCommand

DeleteCommand

ConnectionConnectionDataAdapterDataAdapter

ConnectionConnection

UpdateCommandUpdateCommand

SelectCommandSelectCommand

InsertCommandInsertCommand

DeleteCommandDeleteCommand

TableMappingsTableMappings

Page 21: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 21

Trabajando con DataSets y DataAdaptersTrabajando con DataSets y DataAdapters

Data SourceDataAdapterDataTable

DataTable

DataSet

DataAdapter

FillFill

UpdateUpdate

UpdateUpdate

FillFill

Page 22: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 22

AgendaAgenda

La Arquitectura ADO .NETLa Arquitectura ADO .NET Modo ConectadoModo Conectado

Ejecutando instrucciones SQLEjecutando instrucciones SQL Stored ProceduresStored Procedures TransaccionesTransacciones

Modo DesconectadoModo Desconectado El DataSet y el DataAdapterEl DataSet y el DataAdapter

Leyendo y Actualizando DatosLeyendo y Actualizando Datos Relaciones de DatosRelaciones de Datos Sorteando y FiltrandoSorteando y Filtrando

Page 23: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 23

Llenando de Datos un DataSetLlenando de Datos un DataSet

El método El método FillFill ejecuta las instrucciones de ejecuta las instrucciones de SelectCommand SelectCommand sobre la conexión y llena el sobre la conexión y llena el DataTableDataTable

La conexión es abierta sólo para recuperar los La conexión es abierta sólo para recuperar los datos y es cerrada nuevamentedatos y es cerrada nuevamente

Al pasarle un “select” al constructor Al pasarle un “select” al constructor automáticamente se asigna al automáticamente se asigna al SelectCommandSelectCommand

Dim Strqry As String = “select * from clientes”Dim Strqry As String = “select * from clientes”Dim Da As New SqlAdapter(Strqry, Cn)Dim Da As New SqlAdapter(Strqry, Cn)Dim Ds As New DataSet()Dim Ds As New DataSet()Da.Fill( Ds.Tables(“Clientes”) )Da.Fill( Ds.Tables(“Clientes”) )

Dim Strqry As String = “select * from clientes”Dim Strqry As String = “select * from clientes”Dim Da As New SqlAdapter(Strqry, Cn)Dim Da As New SqlAdapter(Strqry, Cn)Dim Ds As New DataSet()Dim Ds As New DataSet()Da.Fill( Ds.Tables(“Clientes”) )Da.Fill( Ds.Tables(“Clientes”) )

Page 24: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 24

Actualizando los Datos en el DataSetActualizando los Datos en el DataSet Añadiendo filasAñadiendo filas

Actualizando filasActualizando filas

Borrando filasBorrando filas

Dim Nr As DataRow = Ds.Tables(“Clientes“).NewRowDim Nr As DataRow = Ds.Tables(“Clientes“).NewRowNr(“Nombre“)=“Daniel Carvajal"Nr(“Nombre“)=“Daniel Carvajal"Ds.Tables(Clientes“).Rows.Add(Nr)Ds.Tables(Clientes“).Rows.Add(Nr)

Dim Nr As DataRow = Ds.Tables(“Clientes“).NewRowDim Nr As DataRow = Ds.Tables(“Clientes“).NewRowNr(“Nombre“)=“Daniel Carvajal"Nr(“Nombre“)=“Daniel Carvajal"Ds.Tables(Clientes“).Rows.Add(Nr)Ds.Tables(Clientes“).Rows.Add(Nr)

Dim Cr As DataRow = Dim Cr As DataRow = Ds.Tables(“Clientes“).Rows(9)Ds.Tables(“Clientes“).Rows(9)Cr.BeginEdit()Cr.BeginEdit()Cr(“Nombre“)=“Daniel Carbajal"Cr(“Nombre“)=“Daniel Carbajal"Cr.EndEdit()Cr.EndEdit()

Dim Cr As DataRow = Dim Cr As DataRow = Ds.Tables(“Clientes“).Rows(9)Ds.Tables(“Clientes“).Rows(9)Cr.BeginEdit()Cr.BeginEdit()Cr(“Nombre“)=“Daniel Carbajal"Cr(“Nombre“)=“Daniel Carbajal"Cr.EndEdit()Cr.EndEdit()

Ds.Tables(“Clientes“).Rows(9).Delete()Ds.Tables(“Clientes“).Rows(9).Delete()Ds.Tables(“Clientes“).Rows(9).Delete()Ds.Tables(“Clientes“).Rows(9).Delete()

Page 25: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 25

Actualizando los Cambios en la BDActualizando los Cambios en la BD

Con el método Con el método UpdateUpdate del del DataAdapterDataAdapter : :

Con este método se detectan los cambios y se Con este método se detectan los cambios y se disparan los respectivos disparan los respectivos InsertCommand, InsertCommand, UpdateCommand y DeleteCommandUpdateCommand y DeleteCommand del del DataAdapterDataAdapter

Estos objetos Command se pueden generar Estos objetos Command se pueden generar automáticamente por un objeto de la clase automáticamente por un objeto de la clase SqlCommandBuilderSqlCommandBuilder

Da.Update( Ds.Tables(“Clientes”) )Da.Update( Ds.Tables(“Clientes”) )Da.Update( Ds.Tables(“Clientes”) )Da.Update( Ds.Tables(“Clientes”) )

Dim Cmd As SqlCommandBuilder = New Dim Cmd As SqlCommandBuilder = New SqlCommandBuilder(Da)SqlCommandBuilder(Da)

Dim Cmd As SqlCommandBuilder = New Dim Cmd As SqlCommandBuilder = New SqlCommandBuilder(Da)SqlCommandBuilder(Da)

Page 26: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 26

AgendaAgenda

La Arquitectura ADO .NETLa Arquitectura ADO .NET Modo ConectadoModo Conectado

Ejecutando instrucciones SQLEjecutando instrucciones SQL Stored ProceduresStored Procedures TransaccionesTransacciones

Modo DesconectadoModo Desconectado El DataSet y el DataAdapterEl DataSet y el DataAdapter Leyendo y Actualizando DatosLeyendo y Actualizando Datos

Relaciones de DatosRelaciones de Datos Sorteando y FiltrandoSorteando y Filtrando

Page 27: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 27

Restricciones de Clave ForáneaRestricciones de Clave Foránea

Permite la Integridad ReferencialPermite la Integridad Referencial Si la propiedad EnforceConstraints del DataSet es Si la propiedad EnforceConstraints del DataSet es

TrueTrue La tabla padre tener clave primariaLa tabla padre tener clave primaria Se añade la clave foránea a la tabla hijaSe añade la clave foránea a la tabla hija

Tiene propiedades DeleteRule y UpdateRuleTiene propiedades DeleteRule y UpdateRule Cascade, SetNull, SetDefault, NoneCascade, SetNull, SetDefault, None

Dim fkcCustomersOrders As New ForeignKeyConstraint( _Dim fkcCustomersOrders As New ForeignKeyConstraint( _““FK_CustomersOrders“, _FK_CustomersOrders“, _dtCustomers.Columns(“CustomerID”), _dtCustomers.Columns(“CustomerID”), _dtOrders.Columns(“CustomerID”)) dtOrders.Columns(“CustomerID”)) fkcCustomersOrders.DeleteRule = Rule.NonefkcCustomersOrders.DeleteRule = Rule.NonedtOrders.Constraints.Add(fkcCustomersOrders)dtOrders.Constraints.Add(fkcCustomersOrders)

Dim fkcCustomersOrders As New ForeignKeyConstraint( _Dim fkcCustomersOrders As New ForeignKeyConstraint( _““FK_CustomersOrders“, _FK_CustomersOrders“, _dtCustomers.Columns(“CustomerID”), _dtCustomers.Columns(“CustomerID”), _dtOrders.Columns(“CustomerID”)) dtOrders.Columns(“CustomerID”)) fkcCustomersOrders.DeleteRule = Rule.NonefkcCustomersOrders.DeleteRule = Rule.NonedtOrders.Constraints.Add(fkcCustomersOrders)dtOrders.Constraints.Add(fkcCustomersOrders)

Page 28: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 28

Qué es un objeto DataRelation?Qué es un objeto DataRelation?

Define una relación de navegación, NO una Define una relación de navegación, NO una relación de restricciónrelación de restricción

Tiene un parámetro que permite crear Tiene un parámetro que permite crear también una restricción de clave foráneatambién una restricción de clave foránea

Lo usan los objetos de presentación para Lo usan los objetos de presentación para mostrar a las filas hijas relacionadas y para mostrar a las filas hijas relacionadas y para calcular agregados en columnas de expresióncalcular agregados en columnas de expresión

dsNorthwind.Relations.Add(“FK_CustomersOrders", _dsNorthwind.Relations.Add(“FK_CustomersOrders", _dtCustomers.Columns("CustomerID"), _dtCustomers.Columns("CustomerID"), _dtOrders.Columns("CustomerID"), _dtOrders.Columns("CustomerID"), _True) ‘Crea tambien la FKTrue) ‘Crea tambien la FK

dsNorthwind.Relations.Add(“FK_CustomersOrders", _dsNorthwind.Relations.Add(“FK_CustomersOrders", _dtCustomers.Columns("CustomerID"), _dtCustomers.Columns("CustomerID"), _dtOrders.Columns("CustomerID"), _dtOrders.Columns("CustomerID"), _True) ‘Crea tambien la FKTrue) ‘Crea tambien la FK

Page 29: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 29

Navegando entre DataTables relacionadasNavegando entre DataTables relacionadas

Se usa el método GetChildRows de la Se usa el método GetChildRows de la DataRowDataRow Se le pasa el nombre de una DataRelation como Se le pasa el nombre de una DataRelation como

parámetroparámetro

Dim drCustomer As DataRowDim drCustomer As DataRowDim drOrder As DataRowDim drOrder As DataRowFor Each drCustomer In _For Each drCustomer In _ dsNorthwind.Tables("Customer").RowsdsNorthwind.Tables("Customer").Rows For Each drOrder In drCustomer.GetChildRows( _For Each drOrder In drCustomer.GetChildRows( _ "FK_CustomersOrders")"FK_CustomersOrders") ‘ ‘ procesar filaprocesar fila NextNextNextNext

Dim drCustomer As DataRowDim drCustomer As DataRowDim drOrder As DataRowDim drOrder As DataRowFor Each drCustomer In _For Each drCustomer In _ dsNorthwind.Tables("Customer").RowsdsNorthwind.Tables("Customer").Rows For Each drOrder In drCustomer.GetChildRows( _For Each drOrder In drCustomer.GetChildRows( _ "FK_CustomersOrders")"FK_CustomersOrders") ‘ ‘ procesar filaprocesar fila NextNextNextNext

Page 30: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 30

AgendaAgenda

La Arquitectura ADO .NETLa Arquitectura ADO .NET Modo ConectadoModo Conectado

Ejecutando instrucciones SQLEjecutando instrucciones SQL Stored ProceduresStored Procedures TransaccionesTransacciones

Modo DesconectadoModo Desconectado El DataSet y el DataAdapterEl DataSet y el DataAdapter Leyendo y Actualizando DatosLeyendo y Actualizando Datos Relaciones de DatosRelaciones de Datos

Sorteando y FiltrandoSorteando y Filtrando

Page 31: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 31

El Método Select del DataTableEl Método Select del DataTable

Obtiene un arreglo de objetos DataRow que Obtiene un arreglo de objetos DataRow que concuerdan con el filtro en el orden del sort y concuerdan con el filtro en el orden del sort y con un estado específico con un estado específico

Dim selRows As DataRow() = _Dim selRows As DataRow() = _ dtCustomers.Select(“City=‘London’“, _dtCustomers.Select(“City=‘London’“, _ “ “CompanyName ASC”, DataViewRowState.Deleted)CompanyName ASC”, DataViewRowState.Deleted)Dim row As DataRowDim row As DataRowFor Each row In SelRowsFor Each row In SelRows MessageBox.Show(“Nombre Compañía: “, _MessageBox.Show(“Nombre Compañía: “, _ row(“CompanyName”, DataRowVersion.Original))row(“CompanyName”, DataRowVersion.Original))NextNext

Dim selRows As DataRow() = _Dim selRows As DataRow() = _ dtCustomers.Select(“City=‘London’“, _dtCustomers.Select(“City=‘London’“, _ “ “CompanyName ASC”, DataViewRowState.Deleted)CompanyName ASC”, DataViewRowState.Deleted)Dim row As DataRowDim row As DataRowFor Each row In SelRowsFor Each row In SelRows MessageBox.Show(“Nombre Compañía: “, _MessageBox.Show(“Nombre Compañía: “, _ row(“CompanyName”, DataRowVersion.Original))row(“CompanyName”, DataRowVersion.Original))NextNext

Page 32: Curso Ado Net

[email protected] - [email protected]@hotmail.com - [email protected] a Bases de Datos 32

Trabajando con DataViewsTrabajando con DataViews

Similar a las Vistas en SQL, representan un Similar a las Vistas en SQL, representan un subconjunto de datos de un DataTablesubconjunto de datos de un DataTable

Los DataViews permiten ordenación y filtrado Los DataViews permiten ordenación y filtrado de datos en tiempo de diseñode datos en tiempo de diseño

No puede abarcar varios DataTablesNo puede abarcar varios DataTables Los DataTable tienen la propiedad DefaultViewLos DataTable tienen la propiedad DefaultView

Dim dvProducts As New _Dim dvProducts As New _ DataView(dsNorthwind.Tables("Products"))DataView(dsNorthwind.Tables("Products"))dvProducts.Sort = "UnitPrice“dvProducts.Sort = "UnitPrice“dvProducts.RowFilter = "CategoryID > 4“dvProducts.RowFilter = "CategoryID > 4“

grdProducts.DataSource = dvProductsgrdProducts.DataSource = dvProducts

Dim dvProducts As New _Dim dvProducts As New _ DataView(dsNorthwind.Tables("Products"))DataView(dsNorthwind.Tables("Products"))dvProducts.Sort = "UnitPrice“dvProducts.Sort = "UnitPrice“dvProducts.RowFilter = "CategoryID > 4“dvProducts.RowFilter = "CategoryID > 4“

grdProducts.DataSource = dvProductsgrdProducts.DataSource = dvProducts