Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
DATOS CON
ADO.NET
logos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a logos Conocimiento, S.L.
NDICE
ACCESO A BASE DE DATOS CON ADO.NET
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Transactions
Module Module1
Dim connectionString As String
Public Sub Main()
Aqu definimos la cadena de conexin
connectionString = Data Source=LG-TONY\SQLEXPRESS2008;Initial
Catalog=AdventureWorks;Integrated Security=SSPI;
Como ves, es bastante fcil de comprender el sistema, una vez que te lo han explicado, claro.
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Transactions
Module Module1
Dim connectionString As String
Public Sub Main()
Aqu definimos la cadena de conexin
connectionString = Data Source=LG-TONY\SQLEXPRESS2008; & _
Initial Catalog=AdventureWorks; & _
Integrated Security=SSPI;
desconectado()
End Sub
Public Sub desconectado()
Using connection As New SqlConnection(connectionString)
Creamos el DataAdapter
Dim ProductDA As SqlDataAdapter = New SqlDataAdapter()
Le asignamos la tabla de la que deseamos recuperar informacin
ProductDA.TableMappings.Add(Table, Production.Product)
Definimos el SelectCommand que vamos a utilizar
Dim sql1 As String = SELECT ProductID, Name, & _
ProductModelID FROM Production.Product
Dim sql2 As String = WHERE ProductModelID > 0;
Dim sql As String = sql1 & sql2
Dim ProductSC As SqlCommand = New SqlCommand(sql, connection)
ProductSC.CommandType = CommandType.Text
Asignamos el comando recin creado al DataAdapter
ProductDA.SelectCommand = ProductSC
Creamos el DataSet
Dim DataSetPrueba As DataSet = New DataSet(Prueba)
Se abre la conexin
connection.Open()
10
11
Como ves, no ha funcionado del todo, hay un registro con el nombre demasiado corto y no quera
meter ms condiciones en el If.
Para recorrer los datos de un DataTable de un DataSet no es preciso el ForEach de toda la coleccin de Rows
de la misma, hay otros mtodos, menos manuales para hacerlo, aunque si lo que necesitas es pasar por
todos los registros, esta es una estupenda herramienta.
Pero claro, no siempre nos interesa tratar todo lo que se haya trado el DataAdapter, a veces hay que filtrar
la informacin de un modo que no se poda realizar con la sentencia Select del comando, pues para eso
disponemos del mtodo Select del objeto DataTable, el cual nos permite asimismo ordenar los resultados.
Tambin tenemos el mtodo Find de la coleccin DataRowCollection para hallar registros por clave.
Aunque suele dar mejor rendimiento la utilizacin de un DataView (que veremos ms adelante) para el tema
de filtros y ordenaciones sobre un DataTable que el uso de Select, pero dispones de ambas herramientas.
El mtodo Select dispone de otra forma de seleccionar los registros del DataTable, es mediante el filtro de
la propiedad DataViewRowState, que registra el estado de la fila con respecto a la situacin inicial de la
carga, con un amplio espectro de situaciones que nos permiten un sistema de filtrado diferente y muy
potente.
12
13
14
Imports
Imports
Imports
Imports
System
System.Data
System.Data.SqlClient
System.Transactions
Module Module1
Dim connectionString As String
Public Sub Main()
Aqu definimos la cadena de conexin
connectionString = Data Source=LG-TONY\SQLEXPRESS2008; & _
Initial Catalog=AdventureWorks;Integrated Security=SSPI;
adicion()
End Sub
15
16
17
Como ves es bastante fcil de seguir. Dejando al margen el tema del desglose en diversas rutinas
y funciones del cdigo, aunque a estas alturas ya no debera suponer ningn problema para ti.
18
19
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Transactions
Module Module1
Dim connectionString As String
Public Sub Main()
Aqu definimos la cadena de conexin
connectionString = Data Source=LG-TONY\SQLEXPRESS2008; & _
Initial Catalog=AdventureWorks;Integrated Security=SSPI;
ConVista()
End Sub
Public Sub ConVista()
Creamos el DataSet
Dim Datos As DataSet = New DataSet()
Datos = CargarDatos()
Contamos cuantos registros se ha traido
Dim cuenta As Integer = Datos.Tables(Production.Product).Rows.Count()
Console.WriteLine(Ha leido: & cuenta & _
registros de la base de datos para la tabla Product)
Mostramos la tabla cargada
Mostrar(Datos.Tables(Production.Product), Tabla original)
Creamos dos DataView sobre la tabla de datos
Dim VistaUno As DataView = New DataView(Datos.Tables(Production.Product))
Dim VistaDos As DataView = New DataView(Datos.Tables(Production.Product))
Cambiamos algn dato
Datos.Tables(Production.Product).Rows(0)(Name) = Primer registro
Datos.Tables(Production.Product).Rows(1)(name) = Segundo registro
Mostramos, como antes, los 10 primeros
Mostrar(Datos.Tables(Production.Product), Tabla con modificaciones)
Le decimos a la primera vista que muestre slo los registros modificados
20
21
22
Creo que no hay mayor complicacin para comprender el cmo funciona un DataView.
Si pulsamos F5 en el cdigo anterior obtendremos lo siguiente:
23
EN RESUMEN
El modo de acceso desconectado a datos est previsto para evitar los bloqueos en las bases de
datos y la saturacin de ancho de banda.
Se caracteriza por la utilizacin de DataAdapters para llenar los DataSets, los cuales estn
compuestos de DataTables, que vienen a ser la imagen de las tablas correspondientes
recuperadas de la base de datos.
Has visto que las tablas se mantienen relacionadas mediante su coleccin ConstraintCollection
y la DataRelationCollection de sus DataSet.
24