SlideShare una empresa de Scribd logo
1 de 44
Unidad 2: AplicacionesWindows Forms
2.3 Acceso a datos ADONET
Plataformas de Desarrollo 1
Modalidad de estudios: Presencial
Mg. Luis Fernando Aguas Bucheli
+593 984015184
@Aguaszoft
Laguas@uisrael.edu.ec
Lfabsoft2019@gmail.com
Objetivos del encuentro:
1. Adquirir los conceptos básicos relacionados con NET.
2. Reconocer las características de .NET.
3. Conocer la historia de .NET
Semana Nro. 11
Frase Motivacional
“Si no sueltas el pasado, ¿con qué
mano agarras el futuro?.”
Introducción



Es parte fundamental de NET Framework.
Es un modelo de objetos desarrollado por Microsoft.
Provee servicios de acceso a datos para múltiples fuentes de datos.
• Bases de datos relacionales (RDBMS)
• XML
• Archivos Excel, Access, etc…
 Provee componentes para crear aplicaciones web y distribuidas sobre
diversas fuentes de datos.




Se accede mediante el namespace System.Data.
Provee escenarios conectados y desconectados.
Es la evolución de Microsoft ADO (Activex Data Objects).
Provee una serie de interfaces y clases abstractas para
implementaciones de terceros. (API Independendiente)
Componentes de ADO .Net
Proveedores de datos
• Se utilizan para conectarse a la base de datos, recuperar información y
ejecutar órdenes contra la misma.
• Dependientes del gestor de datos utilizado.
– Proveedor de datos para SQL Server.
– Proveedor de datos para OleDB.
• Utiliza los controladores nativos OleDB para Windows.
• Precisan de una capa adicional entre . NET y la base de datos.
– Proveedor de datos para Oracle (a partir de .NET Framework 1.1).
Arquitectura de ADO .NET
(2 componentes fundamentales)
LOS NET FRAMEWORK DATA PROVIDERS
• Son un conjunto de objetos (Connection,
Command, DataReader, DataAdapter).
• Permiten la conexión a la fuente de datos.
• Permiten obtener, modificar datos.
• Pueden ejecutar “Stored Procedures” y
enviar/recibir parámetros
EL DATASET
•
•
•
• Son representaciones “en memoria” de los
datos.
Independiente de la fuente de datos.
Puede utilizar múltiples fuentes de datos.
Proporciona un conjunto de objetos
(DataTables, DataRow, etc.)
• Utilizan XML para su persistencia.
• Diseñado para escenarios “desconectados”
Modelo de objetos
ADO.Net
Objeto Connection
• Establece la conexión con la base de datos mediante
una “cadena de conexión”.
Objeto Command
• Ejecuta una acción contra el almacén de datos, ya
sea de consulta o de acción.
Objeto DataReader
• Conjunto de registros recuperado a partir del objeto
Command.
Objeto DataAdapter
• Puente entre la conexión y los datos almacenados
en un DataSet.
• Permite cargar los datos en el DataSet a partir de un
origen de datos y actualizarlos.
Modelo de objetos
ADO.Net
Objeto DataSet.
• Objeto “abstracto”: desligado
de cualquier gestor de bases de
datos.
• Conjunto de tablas obtenidas
mediante el método Fill del
objeto DataAdapter.
• Se puede considerar como una
base de datos almacenada en la
memoria caché del cliente.
• Las tablas se cargan en la
memoria caché del cliente,
dejando disponible la
conexión con el origen de
datos para otros usuarios.
Espacios de nombres para ADO
.NET• Las clases de acceso a datos de .NET Framework están en el espacio de nombres
System.Data.
• Incluye las clases que no pertenecen a ningún proveedor específico.
• Los nombres de las clases pertenecientes al proveedor de datos .NET son nombres
genéricos.
• Existen clases distintas para cada sistema de gestión de bases de datos ubicadas
en su propio espacio de nombres:
OleDbCommand, System.Data.OleDb. (OleDbConnection,
OleDbDataReader y OleDbDataAdapter.
 System.Data.SqlClient. (SqlConnection, SqlCommand, SqlDataReader
y SqlDataAdapter.
 System.Data.Odbc. (OdbcConnection, OdbcCommand,
OdbcDataReader y OdbcDataAdapter.
 System.Data.OracleClient. (OracleConnection, OracleCommand,
OracleDataReader y OracleDataAdapter.
Modo Conectado
• Vínculo con la BD
• Inicia transacciones
• Tipos
• OdbcConnection
• SqlConnection
• OleDbConnection
• OracleConnection
Aplicación
conexión
Conexión: Objeto Connection
Aplicación
Modo Conectado
•
• Envío de sentencias Transact-SQL
•Parámetros
Puede devolver
• Número de filas afectadas
• Un valor escalar
• Un lector de datos
• Tipos
• OdbcCommand
• SqlCommand
• OleDbCommand
• OracleCommand
conexión
comando
Comando: Objeto Command
datos
Modo Conectado
• Lectura secuencial de datos
• Por fila
• Por bytes
• Sólo lectura
• Máximo rendimiento
• Única funcionalidad
• Foward-only
• Puede manejar varios conjuntos
de resultados
• Tipos
• OdbcDataReader
• SqlDataReader
• OleDbDataReader
• OracleDataReader
conexión
Aplicación
comando
Lector de datos: Objeto DataReader
Resumen: Modo Conectado
• Utiliza los objetos Connection, Command y DataReader.
• Se establece una conexión permanente con el origen de datos.
• A partir de una conexión, el objeto Command generará un objeto
DataReader con la información necesaria.
• Los datos del objeto DataReader son de sólo lectura.
• El objeto Command, también se encargará de realizar las
operaciones de actualización con la base de datos.
• La información entre el cliente y el servidor se establece en un
formato binario propietario del gestor de base de datos.
• Se utiliza cuando se deben procesar los registros en un corto
espacio de tiempo:
• Realización de informes.
• Páginas dinámicas ASP de Internet.
Aplicación
data
table
Modo Desconectado
• Contenedor de datos
• Cualquier orígen de datos
• Independiente de este
• Contiene objetos tabla
• Contienen objetos fila y columna
• Integridad de los datos
• Restricciones
• Tipos
• System.Data.DataSet
• System.Data.DataTable
• System.Data.DataView
data
table
data
table
Conjunto de datos: Objeto DataSet
XML ...
unique foreign key
data set
Aplicación
c s
Modo Desconectado
• Orquestador del acceso a datos
• Creado para trabajar con un
DataSet
• Contiene un comando de selección
y un lector de datos
• Contiene 3 comandos para
persistir cambios en la BD
• Tipos
• OdbcDataAdapter
• OledbDataAdapter
• SqlDataAdapter
• OracleDataAdapter
conexión
Adaptador de datos: Objeto DataAdapter
selectuindpsedelaertte
lector
data adapter
data
set
Resumen: Modo Desconectado
• La conexión sólo es necesario establecerla cuando se descarga información del origen de
datos.
• Cada tabla del DataSet precisa de un objeto DataAdapter.
• El método Fill se encargará de cargar una tabla en el DataSet.
• Los datos se almacenan en la memoria caché del cliente en un objeto DataSet.
• Los datos almacenados en el DataSet se pueden modificar.
• Las modificaciones efectuadas en el DataSet se pueden sincronizar con el origen de datos.
• El método Update del objeto DataAdapter permite actualizar el origen de datos.
• La información entre el cliente y el servidor se transmite en forma de datos XML (pueden ser
utilizados por otra aplicación).
• Se utiliza cuando:
• Se necesita modificar los datos frecuentemente.
• Es necesario que los datos estén mucho tiempo en memoria (por ejemplo en
aplicaciones Windows Form).
• Cuando no siempre es posible estar conectado al origen de datos (aplicaciones
móviles).
Conexión a la base de datos
modo conectado como• Imprescindible tanto en
desconectado.
• Pasos para crear una conexión:
• Crear una instancia de algunas de las clases
Connection.
• Establecer la cadena de conexión mediante la
propiedad ConnectionString.
• Abrir la conexión.
• En modo conectado la conexión permanecerá
abierta hasta que termine la aplicación.
• En modo desconectado se cargarán los datos en
un objeto DataSet y se cerrará la conexión.
• Crear una instancia de las clases.
• Para el proveedor de datos SQL.
Dim cnSQL As New SqlConnection
• Para el proveedor de datos OleDb.
Dim cnOleDb as New OleDbConnection
• Notas:
• Los nombres de las instancias serán cnSQL y cnOleDb
respectivamente.
• Es necesario tener establecido el espacio de nombres o
bien utilizar el nombre cualificado
(System.Data.SqlClient.SqlConnection).
• Dependiendo del alcance que queramos dar a las
variables utilizaremos los modificadores Dim, Private,
Public, etc.
Conexión a la base de datos
• Cadena de conexión.
• Todas las clases Connection de todos los proveedores tienen la
propiedad ConnectionString.
• El valor de la propiedad será una expresión de cadena
formada por parejas de nombres de argumentos y valores,
separados por un punto y coma.
SQL.ConnectionString ="Server=(local); Database=ventas; User ID=Ponce; pwd=12345"
• Argumentos para una conexión para el proveedor de SQL Server.
Conexión a la base de datos
Nombre del servidor de base de datos.
Nombre de la base de datos a la que se va a conectar
Si se pone a false se debe especificar el nombre de usuario y la contraseña; si
se pone a true se utilizarán las credenciales de la cuenta de Windows. Los
valores permitidos son true, false, yes, no y sspi (recomendada, equivalente a
true)
Si se pone a false (recomendado) la información de seguridad no se devuelve
como parte de la conexión.
Nombre de usuario de una cuenta registrada en SQL Server
Contraseña de inicio de sesión para una cuenta de SQL Server
Data Source o Server
Inicial Catalog o Database
Integrated Security
Persist Security Info
User ID
Pwd
Que empiece la acción:
Modo Conectado
DataReader
Command
.NET
Trabajar en modo conectado
Recuperar filas.
Se realiza con el método ExecuteReader de la clase Command.
• Command es una clase del proveedor de datos, por lo que es preciso elegir la subclase adecuada
(OledDBCommand, SQLCommand, ODBCCommand u OracleCommand).
• En el constructor se pasaría la sentencia SQL de recuperación (sentencia SELECT) necesaria para
recuperar filas.
• ExecuteReader devuelve un objeto de la clase DataReader.
• También es una clase del proveedor de datos.
• Representa el conjunto de filas recuperados por la SELECT.
• Es sólo de lectura y sólo se puede ir a la siguiente fila
‘ Cadena de conexión para el proveedor SQLServer
Dim cnSQL As New SqlConnection
cnSQL.ConnectionString ="Server=(local);Database=ventas;U ser ID=Ponce;pwd=12345"
cnSQL.Open()
‘ Crear una orden de recuperación
Dim miOrden As SqlCommand =New SqlCommand("SELECT * FROM Cargo", cnSQL)
‘ Crear el DataReader
Dim drCargo As SqlDataReader
‘ Ejecutar la consulta
Acceder a las filas recuperadas.
• El método Read carga en el objeto DataReader la siguiente fila.
• Devuelve false si no hay más filas.
• Los métodos Getxxx, permiten acceder al contenidos de las columnas.
• Hay un método Getxxx por cada tipo de datos.
• Utiliza como argumento el número de columna al que se accede.
Trabajar en modo conectado
‘ Acceder a las filas recuperadas
‘ Limpiamos antes el listbox
ListBox1.Items.Clear()
Do While drCargo.Read
ListBox1.Items.Add(drCargo("codcar") & "- " & drCargo("descar"))
Loop
drCargo.Close()
Ejecutar funciones agregadas.
• El método ExecuteScalar de la clase Command devuelve sólo la primera columna de una
sentencia SELECT.
Trabajar en modo conectado
‘ Obtener el número total de registros de la tabla Cargo
miOrden = New SqlCommand("SELECT COUNT(*) FROM Cargo", cnSQL)
Label1.Text = "Número de filas: " & miOrden.ExecuteScalar
Ejecutar ordenes SQL de actualización.
• Se utiliza el método ExecuteNonQuery de la clase Command.
• Se ejecuta la sentencia SQL con la que se cree el objeto Command.
‘ Modificar la Nombre del cargo con código 00003
miOrden=New SqlCommand("UPDATE Cargo SET DESCAR='Super Cajero' WHERE CodCar=00003",
cnSQL)
miOrden.ExecuteNonQuery()
‘ Añadir el cargo con Codcar 00007
miOrden = New SqlCommand("INSERT INTO Cargo (CodCar,DesCar)" & _
"VALUES ('00007','Relacionaista publico')", cnSQL)
miOrden.ExecuteNonQuery()
‘ Eliminar el cargo con código 00007
miOrden = New SqlCommand("DELETE FROM Cargo WHERE CodCar=00007", cnSQL)
miOrden.ExecuteNonQuery()
Ahora veamos el
Modo Desconectado
DataSetDataAdapter
.NET
Select Insert
Update
Delete
DataTable
DataRow
DataColumn
…
En modo desconectado los adaptadores de datos se utilizan para relacionar una
conexión con un conjunto de datos.
• Adapta los datos del formato nativo del gestor de bases de datos para que
puedan ser utilizados en el DataSet (XML).
• Carga las diferentes tablas en el DataSet.
• Actualiza las modificaciones del DataSet en el origen de datos.
• Normalmente se utilizará un adaptador de datos por cada tabla que
queramos recuperar del origen de datos.
Crear la instancia del adaptador de datos.
• Constructor.
Dim nombreAdaptador As xxxDataAdapter
nombreAdaptador = New xxxDataAdapter(selectSQL, conexión)
•
• xxxDataAdapter es alguna de las clases SqlDataAdapter, OleDbDataAdapter,
OdbcDataAdapter y OracleDataAdapter.
• selectSQL es una cadena con la instrucción SQL que recuperará los datos de
la tabla que se añadirá al DataSet.
conexión es un objeto Connection ya abierto.
Modo Desconectado – Adaptadores de datos
Rellenar el conjunto de datos
• El adaptador de datos permite cargar las tablas recuperadas a partir de la sentencia SQL
en objetos de tipo DataTable del conjunto de datos.
• El método Fill permite realizar la carga de datos.
objetoDataAdapter.Fill(objetoDataSet,nombreObjetoDataTable)
• Precisa la existencia de un objeto de la clase DataSet.
• nombreObjetoDataTable es una expresión de cadena que identificará la tabla dentro
del conjunto de datos.
• Los datos que se cargarán en la tabla serán los que se recuperen mediante la
orden SQL del constructor del adaptador de datos.
Adaptadores de datos
Se conecta a una base de datos Access y carga en el conjunto de datos las tablas Clientes y
Pedidos.
Conexiones, Adaptadores y conjunto de datos
‘ Establece los espacios de nombre
Imports System.Data
Imports System.Data.Oledb
...
‘ Declaración de variables. Dependiendo de su alcance pueden llevar otros modificadores
Dim daEmpleado As OledbDataAdapter
Dim daCargo As OledbDataAdapter
Dim ds As New DataSet
‘ Abrimos la conexión
cnSQL.Open()
' Crear los adaptadores de datos
daEmpleado = New OledbDataAdapter("SELECT * FROM Empleado", cnSQL)
daCargo = New OledbDataAdapter("SELECT * FROM Cargo", cnSQL)
' Rellenar el Dataset
daEmpleado.Fill(ds, "Empleado")
daCargo.Fill(ds, "Cargo")
' Una vez cargado el Dataset se puede cerrar la conexión
cnSQL.Close()
‘ Establece los espacios de nombre
Imports System.Data
Imports System.Data.SqlClient
...
‘ Declaración de variables. Dependiendo de su alcance pueden llevar otros modificadores
Dim daEmpleado As SqlDataAdapter
Dim daCargo As SqlDataAdapter
Dim ds As New DataSet
‘ Abrimos la conexión
cnSQL.Open()
' Crear los adaptadores de datos
daEmpleado = New SqlDataAdapter("SELECT * FROM Empleado", cnSQL)
daCargo = New SqlDataAdapter("SELECT * FROM Cargo", cnSQL)
' Rellenar el Dataset
daEmpleado.Fill(ds, "Empleado")
daCargo.Fill(ds, "Cargo")
' Una vez cargado el Dataset se puede cerrar la conexión
cnSQL.Close()
Ahora veamos el mismo ejemplo para SQL SERVER
• Almacena en la memoria• caché del cliente los resultados de la consulta SQL establecida e
adaptador de datos.
• Los datos están disponibles en modo desconectado.
• Forman una pequeña base de datos con la información necesaria para la aplicación.
La clase Dataset
El
DataSet
DataSet
Fill
SOqlelbCbCoonnnneeccttiioonn
Base de
Datos
SAqclSceersvser
OSlqeldCboCmommmaanndd OSOleql
ldDbaDtaataRReeaaddeerr
OSleqdlDbDataatAaAdadpaptetrer
La colección Tables.
• Cada tabla añadida por el método Fill del adaptador de datos
formará un objeto de tipo DataTable.
• La propiedad Tables de la clase DataSet permite acceder al
conjunto de objetos DataTable cargados.
• Se puede hacer referencia a cada una de las tablas indicando
el índice de la misma o mediante el nombre.
• Para hacer referencia a la primera tabla cargada
(Clientes)
ds.Tables(0)
• Para hacer referencia a
• la tabla Pedidos
ds.Tables("Pedidos")
La clase Dataset
El DataSet
DataSet
Dat aTable
DataTable
DataRelation
DataColumn
DataRow
• Propiedad Columns
Colección de tipo
DataColumnCollection
 Define el esquema de la
DataRelation
tabla
 Propiedad Rows
Colección de tipo
DataRowCollection
Una vez definido el
esquDemataapToadbemleoshacer:
dt.Rows.Add( <Lista>)
ó
dt.Rows.Add( unaRow )
• Se conecta a una base de datos Access y carga en el conjunto de datos las
tablas Clientes y Pedidos.
La clase Dataset
‘ Ejemplo: obtener las tablas contenidas en el Dataset
For Each dt As DataTable In ds.Tables
lstTablas.Items.Add(dt.TableName)
Next
lblTablas.Text = "Número de tablas: " & CStr(ds.Tables.Count)
Cada tabla (objeto DataTable) está formada por:
• Una colección de columnas (colección de objetos
DataColumn).
• La propiedad Columns permite acceder a cada una de
las columnas.
• Cada columna guarda información de las
características de cada uno de los campos (tipo de
dato, longitud, etc.).
• Es posible acceder a ellas mediante el índice o
• mediante el nombre de la columna.
La clase DataTable
‘ Obtener las columnas de la tabla Empleado
lstColumnas.Items.Add("Indice - Campo")
For i As Integer = 0 To ds.Tables(0).Columns.Count - 1
lstColumnas.Items.Add(CStr(i) & " - " & ds.Tables(0).Columns(i).ColumnName)
Next
lblcolumnas.Text = "Número de Columnas: " & CStr(ds.Tables(0).Columns.Count)
• Una colección de filas (colección de objetos DataRow).
• La propiedad Rows permite acceder a cada una de las filas.
• Cada fila de la colección Rows está identificada por su índice (posición de la fila dentro
de la colección).
• Es posible acceder a ellas de forma similar a un array.
• El valor de cada campo está disponible mediante la colección Item del objeto DataRow.
• Accedemos a cada campo por su índice o por el nombre del campo.
• Obtener la información de todas las filas de una tabla.
La clase DataTable
La clase DataTable
' Solo de referencia
‘ Listado de la tabla Empelado
lstDatosTabla.Items.Clear() ' Primero limpiaremos cuadro de lista
lstDatosTabla.Items.Add("Código | Apellidos | Nombres | Dirección | Telefono")
For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
lstDatosTabla.Items.Add(ds.Tables(0).Rows(i).Item("CodEmp") & " | " & _
ds.Tables(0).Rows(i).Item("Apeemp") & " | " & _
ds.Tables(0).Rows(i).Item("Nomemp") & " | " & _
ds.Tables(0).Rows(i).Item("DirEmp") & " | " & _
ds.Tables(0).Rows(i).Item("telemp")) '& ")"
Next
' Listado de la tabla Cargo
lstDatosCargo.Items.Clear() ' Primero limpiaremos cuadro de lista
lstDatosCargo.Items.Add("Código | Descripción") ‘ Solo de referencia
For Each dr As DataRow In ds.Tables(1).Rows
lstDatosCargo.Items.Add(dr.Item("CodCar") & " - " & dr.Item("DesCar"))
Next
• Capa intermedia que se sitúa entre la tabla.
• Proporciona una vista filtrada y ordenada de las filas de la
tabla.
• Los datos de la tabla no varía, sólo cambia el filtro y la
ordenación de las filas.
• Por su versatilidad se suele utilizar en aplicaciones que
necesiten un enlace a datos.
• Permite crear distintas vistas de una DataTable.
• Por ejemplo…
• Puede servir para mostrar los datos de una tabla con
distintos criterios de ordenación.
• Pueden enlazarse a controles distintos de una
aplicación para mostrar en una rejilla todas filas y en
otra las filas eliminadas.
• Presenta una vista dinámica de la tabla a la que está asociado.
• Las modificaciones que se efectúen en el DataView
pueden tener efecto en la tabla.
• Es similar al concepto de vista de una base de datos, pero…
• No puede excluir ni añadir columnas de la tabla a la que
está asociado
• No puede proporcionar vistas de tablas combinadas.
La clase DataView
Construir un objeto DataView.
• A partir de la propiedad DefaultView de la clase DataTable.
Dim dv As DataView = ds.Tables(“Clientes”).DefaultView
• Proporciona una vista de todas las filas de la tabla Clientes a con
su ordenación original.
• Mediante el contructor de la clase DataView.
DataView(dataTable, expresiónFiltro, expresiónSort,
dataViewRowState)
• expresiónFiltro es una cadena con el criterio de selección en el
mismo formato que en el método Select de la clase DataTable.
• expresiónSort es una cadena con la expresión de ordenación en el
mismo formato que el método Select de la clase DataTable.
DataViewRowState que indica el estado de las
• dataViewRowState es un miembro de la enumeración
filas que se
seleccionarán ( ver diapositiva siguiente).
La clase DataView
Filtrar y ordenar filas.
• La propiedad RowFilter de la clase DataView permite filtrar los registros de la vista.
• El valor de la propiedad sería una cadena con la expresión de filtro ( igual que el
método Select de la clase DataTable).
• La propiedad Sort permite ordenar las filas de la vista.
• El valor de la propiedad sería una cadena con la expresión de ordenación (igual que
el método Select de la clase DataTable).
• La propiedad RowStateFilter es un miembro de la enumeración DataViewRowState que
establece el filtro sobre el estado de la fila.
La clase DataView
La clase DataView
Acceso a las filas de la vista.
• El objeto DataView proporciona una colección objetos DataRow accesible mediante la
propiedad Item.
• Podemos acceder a ellas a partir del índice de cada elemento de la propiedad
Item. dv.Item(0).Item("IdCliente")
• Proporciona el identificador de cliente de la primera fila (fila 0) de la vista de
datos.
‘ Filtrar los registros de la provincia de Madrid ordenados por Ciudad
dim dv as DataView = ds.Tables("Clientes").DefaultView
dv.RowFilter ="Provincia='Madrid'"
dv.Sort ="Ciudad"
For i As Integer = 0 To dv.Count – 1
System.Console.WriteLine(dv.Item(i).item("IdCliente") & “ “ & _
dv.Item(i).item("Apellido") & “ “ & _
dv.Item(i).item("Nombre") & “ “ & _
dv.Item(i).item("Ciudad") & “ “ & _
dv.Item(i).item("Provincia"))
Next
La clase DataRelation
•
• Permiten acceder a los datos de una tabla secundaria a partir de un campo clave de
una tabla primaria.
• También permiten restringir la manipulación de datos y exigir la integridad
referencial de los datos.
La clase DataRelation permite añadir relaciones entre las tablas de un DataSet.
• Las relaciones de un DataSet son accesibles a partir de su colección Relations.
• Creación de una relación.
• Crear una nueva instancia de la clase DataRelation.
New DataRelation(nombreRelación,columnaPadre, columnaHija)
• columnaPadre y columnaHija son dos objetos DataColumn de las tablas
primaria y secundaria.
• Añadirla a la colección Relations del DataSet.
objetoDataSet.Relations.Add(nombreRelación)
Direccionamiento actividades de aprendizaje
Actividades:
• Revisar el aula virtual
• Realizar las actividades y tareas planteadas.
Se recomienda describir por ejemplo:
• Tomar apuntes esenciales, revisar el material de clases
Bibliografía
GRACIAS

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Broadcast Receiver
Broadcast ReceiverBroadcast Receiver
Broadcast Receiver
 
Data Storage In Android
Data Storage In Android Data Storage In Android
Data Storage In Android
 
ADO
ADOADO
ADO
 
JDBC - JPA - Spring Data
JDBC - JPA - Spring DataJDBC - JPA - Spring Data
JDBC - JPA - Spring Data
 
ADO.NET
ADO.NETADO.NET
ADO.NET
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentation
 
SQLite database in android
SQLite database in androidSQLite database in android
SQLite database in android
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
LINQ in C#
LINQ in C#LINQ in C#
LINQ in C#
 
Jsp tag library
Jsp tag libraryJsp tag library
Jsp tag library
 
Shared preferences
Shared preferencesShared preferences
Shared preferences
 
ADO.NET
ADO.NETADO.NET
ADO.NET
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Introduction to Listview in Android
Introduction to Listview in AndroidIntroduction to Listview in Android
Introduction to Listview in Android
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Basic Technology - Module 13 cloud computing
Basic Technology - Module 13 cloud computingBasic Technology - Module 13 cloud computing
Basic Technology - Module 13 cloud computing
 
Linq
LinqLinq
Linq
 
Database Connectivity in PHP
Database Connectivity in PHPDatabase Connectivity in PHP
Database Connectivity in PHP
 
Spring annotation
Spring annotationSpring annotation
Spring annotation
 

Similar a Aplicaciones Windows Forms con ADONET

Similar a Aplicaciones Windows Forms con ADONET (20)

ADO .NET
ADO .NETADO .NET
ADO .NET
 
visual basic .net
visual basic .netvisual basic .net
visual basic .net
 
Modoconexion
ModoconexionModoconexion
Modoconexion
 
Modo conexion
Modo conexionModo conexion
Modo conexion
 
Ochoa ornelas raquel_acceso a una base de datos
Ochoa ornelas raquel_acceso a una base de datosOchoa ornelas raquel_acceso a una base de datos
Ochoa ornelas raquel_acceso a una base de datos
 
TUTORIAL DE ADO.NET MUY BUENO
TUTORIAL DE ADO.NET MUY BUENOTUTORIAL DE ADO.NET MUY BUENO
TUTORIAL DE ADO.NET MUY BUENO
 
Ado.net
Ado.netAdo.net
Ado.net
 
S3-PD1.pptx
S3-PD1.pptxS3-PD1.pptx
S3-PD1.pptx
 
ADO
ADOADO
ADO
 
Modo conexion manuel
Modo conexion manuelModo conexion manuel
Modo conexion manuel
 
20131018101042
2013101810104220131018101042
20131018101042
 
Curso basico c sharp vii
Curso basico c sharp   viiCurso basico c sharp   vii
Curso basico c sharp vii
 
Ado net
Ado netAdo net
Ado net
 
S3 - ADO.NET
S3 - ADO.NETS3 - ADO.NET
S3 - ADO.NET
 
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
 
Diapositivas de ado.net
Diapositivas de ado.netDiapositivas de ado.net
Diapositivas de ado.net
 
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
 
Sistema Ado.Net
Sistema Ado.NetSistema Ado.Net
Sistema Ado.Net
 
Proveedor act1 uni2_daw_6a
Proveedor act1 uni2_daw_6aProveedor act1 uni2_daw_6a
Proveedor act1 uni2_daw_6a
 
ADO.NET
ADO.NETADO.NET
ADO.NET
 

Más de Luis Fernando Aguas Bucheli (20)

EFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptxEFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptx
 
P-S2.pptx
P-S2.pptxP-S2.pptx
P-S2.pptx
 
EBTS-S1.pptx
EBTS-S1.pptxEBTS-S1.pptx
EBTS-S1.pptx
 
P-S3.pptx
P-S3.pptxP-S3.pptx
P-S3.pptx
 
EBTS-S4.pptx
EBTS-S4.pptxEBTS-S4.pptx
EBTS-S4.pptx
 
P-S4.pptx
P-S4.pptxP-S4.pptx
P-S4.pptx
 
P-S1.pptx
P-S1.pptxP-S1.pptx
P-S1.pptx
 
EBTS-S3.pptx
EBTS-S3.pptxEBTS-S3.pptx
EBTS-S3.pptx
 
EBTS-S2.pptx
EBTS-S2.pptxEBTS-S2.pptx
EBTS-S2.pptx
 
PDIDTI-S7.pptx
PDIDTI-S7.pptxPDIDTI-S7.pptx
PDIDTI-S7.pptx
 
PDIDTI-S4.pptx
PDIDTI-S4.pptxPDIDTI-S4.pptx
PDIDTI-S4.pptx
 
PDIDTI-S2.pptx
PDIDTI-S2.pptxPDIDTI-S2.pptx
PDIDTI-S2.pptx
 
PDIDTI-S1.pptx
PDIDTI-S1.pptxPDIDTI-S1.pptx
PDIDTI-S1.pptx
 
PDIDTI-S8.pptx
PDIDTI-S8.pptxPDIDTI-S8.pptx
PDIDTI-S8.pptx
 
PDIDTI-S6.pptx
PDIDTI-S6.pptxPDIDTI-S6.pptx
PDIDTI-S6.pptx
 
PDIDTI-S5.pptx
PDIDTI-S5.pptxPDIDTI-S5.pptx
PDIDTI-S5.pptx
 
PDIDTI-S3.pptx
PDIDTI-S3.pptxPDIDTI-S3.pptx
PDIDTI-S3.pptx
 
TIC-S4.pptx
TIC-S4.pptxTIC-S4.pptx
TIC-S4.pptx
 
TIC-S3.pptx
TIC-S3.pptxTIC-S3.pptx
TIC-S3.pptx
 
TIC-S2.pptx
TIC-S2.pptxTIC-S2.pptx
TIC-S2.pptx
 

Último

Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Normas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISINormas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISIfimumsnhoficial
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestajeffsalazarpuente
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.ariannytrading
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 

Último (20)

Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Normas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISINormas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISI
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuesta
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 

Aplicaciones Windows Forms con ADONET

  • 1. Unidad 2: AplicacionesWindows Forms 2.3 Acceso a datos ADONET Plataformas de Desarrollo 1 Modalidad de estudios: Presencial Mg. Luis Fernando Aguas Bucheli +593 984015184 @Aguaszoft Laguas@uisrael.edu.ec Lfabsoft2019@gmail.com
  • 2. Objetivos del encuentro: 1. Adquirir los conceptos básicos relacionados con NET. 2. Reconocer las características de .NET. 3. Conocer la historia de .NET Semana Nro. 11
  • 3. Frase Motivacional “Si no sueltas el pasado, ¿con qué mano agarras el futuro?.”
  • 4. Introducción    Es parte fundamental de NET Framework. Es un modelo de objetos desarrollado por Microsoft. Provee servicios de acceso a datos para múltiples fuentes de datos. • Bases de datos relacionales (RDBMS) • XML • Archivos Excel, Access, etc…  Provee componentes para crear aplicaciones web y distribuidas sobre diversas fuentes de datos.     Se accede mediante el namespace System.Data. Provee escenarios conectados y desconectados. Es la evolución de Microsoft ADO (Activex Data Objects). Provee una serie de interfaces y clases abstractas para implementaciones de terceros. (API Independendiente)
  • 6. Proveedores de datos • Se utilizan para conectarse a la base de datos, recuperar información y ejecutar órdenes contra la misma. • Dependientes del gestor de datos utilizado. – Proveedor de datos para SQL Server. – Proveedor de datos para OleDB. • Utiliza los controladores nativos OleDB para Windows. • Precisan de una capa adicional entre . NET y la base de datos. – Proveedor de datos para Oracle (a partir de .NET Framework 1.1).
  • 7. Arquitectura de ADO .NET (2 componentes fundamentales) LOS NET FRAMEWORK DATA PROVIDERS • Son un conjunto de objetos (Connection, Command, DataReader, DataAdapter). • Permiten la conexión a la fuente de datos. • Permiten obtener, modificar datos. • Pueden ejecutar “Stored Procedures” y enviar/recibir parámetros EL DATASET • • • • Son representaciones “en memoria” de los datos. Independiente de la fuente de datos. Puede utilizar múltiples fuentes de datos. Proporciona un conjunto de objetos (DataTables, DataRow, etc.) • Utilizan XML para su persistencia. • Diseñado para escenarios “desconectados”
  • 8. Modelo de objetos ADO.Net Objeto Connection • Establece la conexión con la base de datos mediante una “cadena de conexión”. Objeto Command • Ejecuta una acción contra el almacén de datos, ya sea de consulta o de acción. Objeto DataReader • Conjunto de registros recuperado a partir del objeto Command. Objeto DataAdapter • Puente entre la conexión y los datos almacenados en un DataSet. • Permite cargar los datos en el DataSet a partir de un origen de datos y actualizarlos.
  • 9. Modelo de objetos ADO.Net Objeto DataSet. • Objeto “abstracto”: desligado de cualquier gestor de bases de datos. • Conjunto de tablas obtenidas mediante el método Fill del objeto DataAdapter. • Se puede considerar como una base de datos almacenada en la memoria caché del cliente. • Las tablas se cargan en la memoria caché del cliente, dejando disponible la conexión con el origen de datos para otros usuarios.
  • 10. Espacios de nombres para ADO .NET• Las clases de acceso a datos de .NET Framework están en el espacio de nombres System.Data. • Incluye las clases que no pertenecen a ningún proveedor específico. • Los nombres de las clases pertenecientes al proveedor de datos .NET son nombres genéricos. • Existen clases distintas para cada sistema de gestión de bases de datos ubicadas en su propio espacio de nombres: OleDbCommand, System.Data.OleDb. (OleDbConnection, OleDbDataReader y OleDbDataAdapter.  System.Data.SqlClient. (SqlConnection, SqlCommand, SqlDataReader y SqlDataAdapter.  System.Data.Odbc. (OdbcConnection, OdbcCommand, OdbcDataReader y OdbcDataAdapter.  System.Data.OracleClient. (OracleConnection, OracleCommand, OracleDataReader y OracleDataAdapter.
  • 11. Modo Conectado • Vínculo con la BD • Inicia transacciones • Tipos • OdbcConnection • SqlConnection • OleDbConnection • OracleConnection Aplicación conexión Conexión: Objeto Connection
  • 12. Aplicación Modo Conectado • • Envío de sentencias Transact-SQL •Parámetros Puede devolver • Número de filas afectadas • Un valor escalar • Un lector de datos • Tipos • OdbcCommand • SqlCommand • OleDbCommand • OracleCommand conexión comando Comando: Objeto Command
  • 13. datos Modo Conectado • Lectura secuencial de datos • Por fila • Por bytes • Sólo lectura • Máximo rendimiento • Única funcionalidad • Foward-only • Puede manejar varios conjuntos de resultados • Tipos • OdbcDataReader • SqlDataReader • OleDbDataReader • OracleDataReader conexión Aplicación comando Lector de datos: Objeto DataReader
  • 14. Resumen: Modo Conectado • Utiliza los objetos Connection, Command y DataReader. • Se establece una conexión permanente con el origen de datos. • A partir de una conexión, el objeto Command generará un objeto DataReader con la información necesaria. • Los datos del objeto DataReader son de sólo lectura. • El objeto Command, también se encargará de realizar las operaciones de actualización con la base de datos. • La información entre el cliente y el servidor se establece en un formato binario propietario del gestor de base de datos. • Se utiliza cuando se deben procesar los registros en un corto espacio de tiempo: • Realización de informes. • Páginas dinámicas ASP de Internet.
  • 15. Aplicación data table Modo Desconectado • Contenedor de datos • Cualquier orígen de datos • Independiente de este • Contiene objetos tabla • Contienen objetos fila y columna • Integridad de los datos • Restricciones • Tipos • System.Data.DataSet • System.Data.DataTable • System.Data.DataView data table data table Conjunto de datos: Objeto DataSet XML ... unique foreign key data set
  • 16. Aplicación c s Modo Desconectado • Orquestador del acceso a datos • Creado para trabajar con un DataSet • Contiene un comando de selección y un lector de datos • Contiene 3 comandos para persistir cambios en la BD • Tipos • OdbcDataAdapter • OledbDataAdapter • SqlDataAdapter • OracleDataAdapter conexión Adaptador de datos: Objeto DataAdapter selectuindpsedelaertte lector data adapter data set
  • 17. Resumen: Modo Desconectado • La conexión sólo es necesario establecerla cuando se descarga información del origen de datos. • Cada tabla del DataSet precisa de un objeto DataAdapter. • El método Fill se encargará de cargar una tabla en el DataSet. • Los datos se almacenan en la memoria caché del cliente en un objeto DataSet. • Los datos almacenados en el DataSet se pueden modificar. • Las modificaciones efectuadas en el DataSet se pueden sincronizar con el origen de datos. • El método Update del objeto DataAdapter permite actualizar el origen de datos. • La información entre el cliente y el servidor se transmite en forma de datos XML (pueden ser utilizados por otra aplicación). • Se utiliza cuando: • Se necesita modificar los datos frecuentemente. • Es necesario que los datos estén mucho tiempo en memoria (por ejemplo en aplicaciones Windows Form). • Cuando no siempre es posible estar conectado al origen de datos (aplicaciones móviles).
  • 18. Conexión a la base de datos modo conectado como• Imprescindible tanto en desconectado. • Pasos para crear una conexión: • Crear una instancia de algunas de las clases Connection. • Establecer la cadena de conexión mediante la propiedad ConnectionString. • Abrir la conexión. • En modo conectado la conexión permanecerá abierta hasta que termine la aplicación. • En modo desconectado se cargarán los datos en un objeto DataSet y se cerrará la conexión.
  • 19. • Crear una instancia de las clases. • Para el proveedor de datos SQL. Dim cnSQL As New SqlConnection • Para el proveedor de datos OleDb. Dim cnOleDb as New OleDbConnection • Notas: • Los nombres de las instancias serán cnSQL y cnOleDb respectivamente. • Es necesario tener establecido el espacio de nombres o bien utilizar el nombre cualificado (System.Data.SqlClient.SqlConnection). • Dependiendo del alcance que queramos dar a las variables utilizaremos los modificadores Dim, Private, Public, etc. Conexión a la base de datos
  • 20. • Cadena de conexión. • Todas las clases Connection de todos los proveedores tienen la propiedad ConnectionString. • El valor de la propiedad será una expresión de cadena formada por parejas de nombres de argumentos y valores, separados por un punto y coma. SQL.ConnectionString ="Server=(local); Database=ventas; User ID=Ponce; pwd=12345" • Argumentos para una conexión para el proveedor de SQL Server. Conexión a la base de datos Nombre del servidor de base de datos. Nombre de la base de datos a la que se va a conectar Si se pone a false se debe especificar el nombre de usuario y la contraseña; si se pone a true se utilizarán las credenciales de la cuenta de Windows. Los valores permitidos son true, false, yes, no y sspi (recomendada, equivalente a true) Si se pone a false (recomendado) la información de seguridad no se devuelve como parte de la conexión. Nombre de usuario de una cuenta registrada en SQL Server Contraseña de inicio de sesión para una cuenta de SQL Server Data Source o Server Inicial Catalog o Database Integrated Security Persist Security Info User ID Pwd
  • 21. Que empiece la acción: Modo Conectado DataReader Command .NET
  • 22. Trabajar en modo conectado Recuperar filas. Se realiza con el método ExecuteReader de la clase Command. • Command es una clase del proveedor de datos, por lo que es preciso elegir la subclase adecuada (OledDBCommand, SQLCommand, ODBCCommand u OracleCommand). • En el constructor se pasaría la sentencia SQL de recuperación (sentencia SELECT) necesaria para recuperar filas. • ExecuteReader devuelve un objeto de la clase DataReader. • También es una clase del proveedor de datos. • Representa el conjunto de filas recuperados por la SELECT. • Es sólo de lectura y sólo se puede ir a la siguiente fila ‘ Cadena de conexión para el proveedor SQLServer Dim cnSQL As New SqlConnection cnSQL.ConnectionString ="Server=(local);Database=ventas;U ser ID=Ponce;pwd=12345" cnSQL.Open() ‘ Crear una orden de recuperación Dim miOrden As SqlCommand =New SqlCommand("SELECT * FROM Cargo", cnSQL) ‘ Crear el DataReader Dim drCargo As SqlDataReader ‘ Ejecutar la consulta
  • 23. Acceder a las filas recuperadas. • El método Read carga en el objeto DataReader la siguiente fila. • Devuelve false si no hay más filas. • Los métodos Getxxx, permiten acceder al contenidos de las columnas. • Hay un método Getxxx por cada tipo de datos. • Utiliza como argumento el número de columna al que se accede. Trabajar en modo conectado ‘ Acceder a las filas recuperadas ‘ Limpiamos antes el listbox ListBox1.Items.Clear() Do While drCargo.Read ListBox1.Items.Add(drCargo("codcar") & "- " & drCargo("descar")) Loop drCargo.Close()
  • 24. Ejecutar funciones agregadas. • El método ExecuteScalar de la clase Command devuelve sólo la primera columna de una sentencia SELECT. Trabajar en modo conectado ‘ Obtener el número total de registros de la tabla Cargo miOrden = New SqlCommand("SELECT COUNT(*) FROM Cargo", cnSQL) Label1.Text = "Número de filas: " & miOrden.ExecuteScalar Ejecutar ordenes SQL de actualización. • Se utiliza el método ExecuteNonQuery de la clase Command. • Se ejecuta la sentencia SQL con la que se cree el objeto Command. ‘ Modificar la Nombre del cargo con código 00003 miOrden=New SqlCommand("UPDATE Cargo SET DESCAR='Super Cajero' WHERE CodCar=00003", cnSQL) miOrden.ExecuteNonQuery() ‘ Añadir el cargo con Codcar 00007 miOrden = New SqlCommand("INSERT INTO Cargo (CodCar,DesCar)" & _ "VALUES ('00007','Relacionaista publico')", cnSQL) miOrden.ExecuteNonQuery() ‘ Eliminar el cargo con código 00007 miOrden = New SqlCommand("DELETE FROM Cargo WHERE CodCar=00007", cnSQL) miOrden.ExecuteNonQuery()
  • 25. Ahora veamos el Modo Desconectado DataSetDataAdapter .NET Select Insert Update Delete DataTable DataRow DataColumn …
  • 26. En modo desconectado los adaptadores de datos se utilizan para relacionar una conexión con un conjunto de datos. • Adapta los datos del formato nativo del gestor de bases de datos para que puedan ser utilizados en el DataSet (XML). • Carga las diferentes tablas en el DataSet. • Actualiza las modificaciones del DataSet en el origen de datos. • Normalmente se utilizará un adaptador de datos por cada tabla que queramos recuperar del origen de datos. Crear la instancia del adaptador de datos. • Constructor. Dim nombreAdaptador As xxxDataAdapter nombreAdaptador = New xxxDataAdapter(selectSQL, conexión) • • xxxDataAdapter es alguna de las clases SqlDataAdapter, OleDbDataAdapter, OdbcDataAdapter y OracleDataAdapter. • selectSQL es una cadena con la instrucción SQL que recuperará los datos de la tabla que se añadirá al DataSet. conexión es un objeto Connection ya abierto. Modo Desconectado – Adaptadores de datos
  • 27. Rellenar el conjunto de datos • El adaptador de datos permite cargar las tablas recuperadas a partir de la sentencia SQL en objetos de tipo DataTable del conjunto de datos. • El método Fill permite realizar la carga de datos. objetoDataAdapter.Fill(objetoDataSet,nombreObjetoDataTable) • Precisa la existencia de un objeto de la clase DataSet. • nombreObjetoDataTable es una expresión de cadena que identificará la tabla dentro del conjunto de datos. • Los datos que se cargarán en la tabla serán los que se recuperen mediante la orden SQL del constructor del adaptador de datos. Adaptadores de datos
  • 28. Se conecta a una base de datos Access y carga en el conjunto de datos las tablas Clientes y Pedidos. Conexiones, Adaptadores y conjunto de datos ‘ Establece los espacios de nombre Imports System.Data Imports System.Data.Oledb ... ‘ Declaración de variables. Dependiendo de su alcance pueden llevar otros modificadores Dim daEmpleado As OledbDataAdapter Dim daCargo As OledbDataAdapter Dim ds As New DataSet ‘ Abrimos la conexión cnSQL.Open() ' Crear los adaptadores de datos daEmpleado = New OledbDataAdapter("SELECT * FROM Empleado", cnSQL) daCargo = New OledbDataAdapter("SELECT * FROM Cargo", cnSQL) ' Rellenar el Dataset daEmpleado.Fill(ds, "Empleado") daCargo.Fill(ds, "Cargo") ' Una vez cargado el Dataset se puede cerrar la conexión cnSQL.Close() ‘ Establece los espacios de nombre Imports System.Data Imports System.Data.SqlClient ... ‘ Declaración de variables. Dependiendo de su alcance pueden llevar otros modificadores Dim daEmpleado As SqlDataAdapter Dim daCargo As SqlDataAdapter Dim ds As New DataSet ‘ Abrimos la conexión cnSQL.Open() ' Crear los adaptadores de datos daEmpleado = New SqlDataAdapter("SELECT * FROM Empleado", cnSQL) daCargo = New SqlDataAdapter("SELECT * FROM Cargo", cnSQL) ' Rellenar el Dataset daEmpleado.Fill(ds, "Empleado") daCargo.Fill(ds, "Cargo") ' Una vez cargado el Dataset se puede cerrar la conexión cnSQL.Close() Ahora veamos el mismo ejemplo para SQL SERVER
  • 29. • Almacena en la memoria• caché del cliente los resultados de la consulta SQL establecida e adaptador de datos. • Los datos están disponibles en modo desconectado. • Forman una pequeña base de datos con la información necesaria para la aplicación. La clase Dataset
  • 31. La colección Tables. • Cada tabla añadida por el método Fill del adaptador de datos formará un objeto de tipo DataTable. • La propiedad Tables de la clase DataSet permite acceder al conjunto de objetos DataTable cargados. • Se puede hacer referencia a cada una de las tablas indicando el índice de la misma o mediante el nombre. • Para hacer referencia a la primera tabla cargada (Clientes) ds.Tables(0) • Para hacer referencia a • la tabla Pedidos ds.Tables("Pedidos") La clase Dataset
  • 32. El DataSet DataSet Dat aTable DataTable DataRelation DataColumn DataRow • Propiedad Columns Colección de tipo DataColumnCollection  Define el esquema de la DataRelation tabla  Propiedad Rows Colección de tipo DataRowCollection Una vez definido el esquDemataapToadbemleoshacer: dt.Rows.Add( <Lista>) ó dt.Rows.Add( unaRow )
  • 33. • Se conecta a una base de datos Access y carga en el conjunto de datos las tablas Clientes y Pedidos. La clase Dataset ‘ Ejemplo: obtener las tablas contenidas en el Dataset For Each dt As DataTable In ds.Tables lstTablas.Items.Add(dt.TableName) Next lblTablas.Text = "Número de tablas: " & CStr(ds.Tables.Count)
  • 34. Cada tabla (objeto DataTable) está formada por: • Una colección de columnas (colección de objetos DataColumn). • La propiedad Columns permite acceder a cada una de las columnas. • Cada columna guarda información de las características de cada uno de los campos (tipo de dato, longitud, etc.). • Es posible acceder a ellas mediante el índice o • mediante el nombre de la columna. La clase DataTable ‘ Obtener las columnas de la tabla Empleado lstColumnas.Items.Add("Indice - Campo") For i As Integer = 0 To ds.Tables(0).Columns.Count - 1 lstColumnas.Items.Add(CStr(i) & " - " & ds.Tables(0).Columns(i).ColumnName) Next lblcolumnas.Text = "Número de Columnas: " & CStr(ds.Tables(0).Columns.Count)
  • 35. • Una colección de filas (colección de objetos DataRow). • La propiedad Rows permite acceder a cada una de las filas. • Cada fila de la colección Rows está identificada por su índice (posición de la fila dentro de la colección). • Es posible acceder a ellas de forma similar a un array. • El valor de cada campo está disponible mediante la colección Item del objeto DataRow. • Accedemos a cada campo por su índice o por el nombre del campo. • Obtener la información de todas las filas de una tabla. La clase DataTable
  • 36. La clase DataTable ' Solo de referencia ‘ Listado de la tabla Empelado lstDatosTabla.Items.Clear() ' Primero limpiaremos cuadro de lista lstDatosTabla.Items.Add("Código | Apellidos | Nombres | Dirección | Telefono") For i As Integer = 0 To ds.Tables(0).Rows.Count - 1 lstDatosTabla.Items.Add(ds.Tables(0).Rows(i).Item("CodEmp") & " | " & _ ds.Tables(0).Rows(i).Item("Apeemp") & " | " & _ ds.Tables(0).Rows(i).Item("Nomemp") & " | " & _ ds.Tables(0).Rows(i).Item("DirEmp") & " | " & _ ds.Tables(0).Rows(i).Item("telemp")) '& ")" Next ' Listado de la tabla Cargo lstDatosCargo.Items.Clear() ' Primero limpiaremos cuadro de lista lstDatosCargo.Items.Add("Código | Descripción") ‘ Solo de referencia For Each dr As DataRow In ds.Tables(1).Rows lstDatosCargo.Items.Add(dr.Item("CodCar") & " - " & dr.Item("DesCar")) Next
  • 37. • Capa intermedia que se sitúa entre la tabla. • Proporciona una vista filtrada y ordenada de las filas de la tabla. • Los datos de la tabla no varía, sólo cambia el filtro y la ordenación de las filas. • Por su versatilidad se suele utilizar en aplicaciones que necesiten un enlace a datos. • Permite crear distintas vistas de una DataTable. • Por ejemplo… • Puede servir para mostrar los datos de una tabla con distintos criterios de ordenación. • Pueden enlazarse a controles distintos de una aplicación para mostrar en una rejilla todas filas y en otra las filas eliminadas. • Presenta una vista dinámica de la tabla a la que está asociado. • Las modificaciones que se efectúen en el DataView pueden tener efecto en la tabla. • Es similar al concepto de vista de una base de datos, pero… • No puede excluir ni añadir columnas de la tabla a la que está asociado • No puede proporcionar vistas de tablas combinadas. La clase DataView
  • 38. Construir un objeto DataView. • A partir de la propiedad DefaultView de la clase DataTable. Dim dv As DataView = ds.Tables(“Clientes”).DefaultView • Proporciona una vista de todas las filas de la tabla Clientes a con su ordenación original. • Mediante el contructor de la clase DataView. DataView(dataTable, expresiónFiltro, expresiónSort, dataViewRowState) • expresiónFiltro es una cadena con el criterio de selección en el mismo formato que en el método Select de la clase DataTable. • expresiónSort es una cadena con la expresión de ordenación en el mismo formato que el método Select de la clase DataTable. DataViewRowState que indica el estado de las • dataViewRowState es un miembro de la enumeración filas que se seleccionarán ( ver diapositiva siguiente). La clase DataView
  • 39. Filtrar y ordenar filas. • La propiedad RowFilter de la clase DataView permite filtrar los registros de la vista. • El valor de la propiedad sería una cadena con la expresión de filtro ( igual que el método Select de la clase DataTable). • La propiedad Sort permite ordenar las filas de la vista. • El valor de la propiedad sería una cadena con la expresión de ordenación (igual que el método Select de la clase DataTable). • La propiedad RowStateFilter es un miembro de la enumeración DataViewRowState que establece el filtro sobre el estado de la fila. La clase DataView
  • 40. La clase DataView Acceso a las filas de la vista. • El objeto DataView proporciona una colección objetos DataRow accesible mediante la propiedad Item. • Podemos acceder a ellas a partir del índice de cada elemento de la propiedad Item. dv.Item(0).Item("IdCliente") • Proporciona el identificador de cliente de la primera fila (fila 0) de la vista de datos. ‘ Filtrar los registros de la provincia de Madrid ordenados por Ciudad dim dv as DataView = ds.Tables("Clientes").DefaultView dv.RowFilter ="Provincia='Madrid'" dv.Sort ="Ciudad" For i As Integer = 0 To dv.Count – 1 System.Console.WriteLine(dv.Item(i).item("IdCliente") & “ “ & _ dv.Item(i).item("Apellido") & “ “ & _ dv.Item(i).item("Nombre") & “ “ & _ dv.Item(i).item("Ciudad") & “ “ & _ dv.Item(i).item("Provincia")) Next
  • 41. La clase DataRelation • • Permiten acceder a los datos de una tabla secundaria a partir de un campo clave de una tabla primaria. • También permiten restringir la manipulación de datos y exigir la integridad referencial de los datos. La clase DataRelation permite añadir relaciones entre las tablas de un DataSet. • Las relaciones de un DataSet son accesibles a partir de su colección Relations. • Creación de una relación. • Crear una nueva instancia de la clase DataRelation. New DataRelation(nombreRelación,columnaPadre, columnaHija) • columnaPadre y columnaHija son dos objetos DataColumn de las tablas primaria y secundaria. • Añadirla a la colección Relations del DataSet. objetoDataSet.Relations.Add(nombreRelación)
  • 42. Direccionamiento actividades de aprendizaje Actividades: • Revisar el aula virtual • Realizar las actividades y tareas planteadas. Se recomienda describir por ejemplo: • Tomar apuntes esenciales, revisar el material de clases