Post on 26-Jun-2015
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pe
Acceso a Bases de Acceso a Bases de Datos con Visual Datos con Visual
Basic .NETBasic .NET(ADO.NET)(ADO.NET)
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso a Bases de Datos 4
Arquitectura ADO .NetArquitectura ADO .Net
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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()
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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)
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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()
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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))
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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()
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso a Bases de Datos 21
Trabajando con DataSets y DataAdaptersTrabajando con DataSets y DataAdapters
Data SourceDataAdapterDataTable
DataTable
DataSet
DataAdapter
FillFill
UpdateUpdate
UpdateUpdate
FillFill
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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”) )
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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()
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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)
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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)
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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
danielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.pedanielramoscastaneda@hotmail.com - danielramos@sistemasuni.edu.peAcceso 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