Вы находитесь на странице: 1из 10

UNIVERSIDAD NACIONAL DE SAN JUAN

FACULTAD DE INGENIERÍA

INGENIERÍA ELÉCTRICA

Cátedra Informática - 2018

Programación en
Visual Basic (VB 2010)

Anexo
Acceso a Base de Datos
ADO.NET

1
Información general acerca de ADO.NET

ADO.NET proporciona acceso coherente a orígenes de datos como Microsoft SQL Server y XML, así como a
orígenes de datos expuestos mediante OLE DB (Microsoft Access) y ODBC. Las aplicaciones para usuarios que
comparten datos pueden utilizar ADO.NET para conectar a estos orígenes de datos y recuperar, manipular y
actualizar los datos contenidos.

ADO.NET separa el acceso a datos de la manipulación de datos y crea componentes discretos que se pueden
utilizar por separado o conjuntamente. ADO.NET incluye proveedores de datos de .NET Framework para
conectarse a una base de datos, ejecutar comandos y recuperar resultados. Los resultados se procesan
directamente o se colocan en un objeto DataSet de ADO.NET con el fin de exponerlos al usuario para un propósito
específico, combinados con datos de varios orígenes, o de utilizarlos de forma remota entre niveles. El objeto
DataSet de ADO.NET también puede utilizarse independientemente de un proveedor de datos de .NET Framework
para administrar datos que son locales de la aplicación o que proceden de un origen XML.

Objetivos de diseño para ADO.NET

A la hora de crear ADO.NET, Microsoft se propuso los siguientes objetivos de diseño:

• Aprovechar la tecnología de objetos ADO (ActiveX Data Objects) actuales.

• Admitir el modelo de programación n-tier

• Integrar la compatibilidad con XML

Aprovechar los conocimientos actuales de ADO

El diseño de ADO.NET satisface muchos de los requisitos del modelo de desarrollo de aplicaciones de hoy en día.
Al mismo tiempo, el modelo de programación permanece similar a ADO, en la medida de lo posible, de manera
que los actuales programadores de ADO no tengan que comenzar desde el principio. ADO.NET forma parte
intrínseca de .NET Framework y al programador de ADO le sigue resultando familiar.

ADO.NET también coexiste con ADO. Aunque la mayoría de las nuevas aplicaciones basadas en .NET se escribirán
mediante ADO.NET, ADO sigue estando disponible para el programador de .NET a través de los servicios de
interoperabilidad COM de .NET.

Para obtener más información sobre las diferencias entre ADO y ADO.NET, vea ADO.NET for the ADO Programmer.

Admitir el modelo de programación N-Tier

La idea de trabajar con un conjunto de datos sin mantener una conexión abierta se ha convertido en un objetivo
del modelo de programación. ADO.NET proporciona compatibilidad de primera clase con el entorno de
programación n-tier sin mantener una conexión abierta para el que están escritas muchas aplicaciones nuevas.
La solución de ADO.NET para la programación n-tier es el DataSet.

Para obtener más información sobre DataSets, vea Utilizar DataSets en ADO.NET.

Integrar la compatibilidad con XML

2
XML y el acceso a datos están estrechamente relacionados. XML trata la codificación de datos y el acceso a datos
trata cada vez más sobre XML. .NET Framework no sólo admite los estándares Web, sino que está basado
totalmente en ellos.

La compatibilidad con XML está integrada en los cimientos de ADO.NET. Las clases de XML incluidas en .NET
Framework y ADO.NET forman parte de la misma arquitectura: están integradas en muchos niveles. Ya no es
necesario elegir entre el conjunto de servicios de acceso a datos y los correspondientes servicios de XML; la
capacidad para cruzar de uno a otro es inherente al diseño de ambos.

Arquitectura de ADO.NET
Tradicionalmente, el procesamiento de datos ha dependido principalmente de un modelo de dos niveles basado
en una conexión. A medida que el procesamiento de datos utiliza cada vez más arquitecturas de varios niveles,
los programadores están pasando a un enfoque sin conexión con el fin de proporcionar una escalabilidad mejor
para sus aplicaciones.

Componentes de ADO.NET

Existen dos componentes de ADO.NET que se pueden utilizar para obtener acceso a datos y manipularlos:

• Proveedores de datos de .NET Framework

• El DataSet

Proveedores de datos de .NET Framework


Los proveedores de datos de .NET Framework son componentes diseñados explícitamente para la manipulación
de datos y el acceso rápido a datos de sólo lectura y sólo avance. El objeto Connection proporciona conectividad
a un origen de datos. El objeto Command permite tener acceso a comandos de base de datos para devolver
datos, modificar datos, ejecutar procedimientos almacenados y enviar o recuperar información sobre parámetros.
El objeto DataReader proporciona una secuencia de datos de alto rendimiento desde el origen de datos. Por
último, el objeto DataAdapter proporciona el puente entre el objeto DataSet y el origen de datos. El
DataAdapter utiliza objetos Command para ejecutar comandos SQL en el origen de datos tanto para cargar el
DataSet con datos como para reconciliar en el origen de datos los cambios aplicados a los datos incluidos en el
DataSet.

DataSet
El DataSet de ADO.NET está expresamente diseñado para el acceso a datos independientemente del origen de
datos. Como resultado, se puede utilizar con múltiples y distintos orígenes de datos, con datos XML o para
administrar datos locales de la aplicación. El DataSet contiene una colección de uno o más objetos DataTable
formados por filas y columnas de datos, así como información sobre claves principales, claves externas,
restricciones y relaciones relativa a los datos incluidos en los objetos DataTable.

En el diagrama siguiente se ilustra la relación entre un proveedor de datos de .NET Framework y un DataSet.

Arquitectura de ADO.NET

3
Elegir un DataReader o un DataSet

A la hora de decidir si su aplicación debe utilizar un DataReader o un DataSet debe tener en cuenta el tipo de
funcionalidad que su aplicación requiere. Use un DataSet para hacer lo siguiente:

• Almacene datos en la memoria caché de la aplicación para poder manipularlos. Si solamente necesita leer
los resultados de una consulta, el DataReader es la mejor elección.

• Utilizar datos de forma remota entre un nivel y otro o desde un servicio Web XML.

• Interactuar con datos dinámicamente, por ejemplo para enlazar con un control de formularios Windows
Forms o para combinar y relacionar datos procedentes de varios orígenes.

• Realizar procesamientos exhaustivos de datos sin necesidad de tener una conexión abierta con el origen de
datos, lo que libera la conexión para que la utilicen otros clientes.

Si no necesita la funcionalidad proporcionada por el DataSet, puede mejorar el rendimiento de su aplicación si


utiliza el DataReader para devolver sus datos de sólo avance y de sólo lectura. Aunque el DataAdapter utiliza
el DataReader para rellenar el contenido de un DataSet (vea Llenar un DataSet desde un DataAdapter), al
utilizar el DataReader puede mejorar el rendimiento porque no usará la memoria que utilizaría el DataSet,
además de evitar el procesamiento necesario para crear y rellenar el contenido de DataSet.

Proveedores de datos de .NET Framework

Un proveedor de datos de .NET Framework sirve para conectarse a una base de datos, ejecutar comandos y
recuperar resultados. Esos resultados se procesan directamente o se colocan en un DataSet de ADO.NET con el
fin de exponerlos al usuario para un propósito específico, combinarlos con datos de varios orígenes o utilizarlos
de forma remota entre niveles. Los proveedores de datos de .NET Framework son ligeros, de manera que crean
un nivel mínimo entre el origen de datos y su código, con lo que aumenta el rendimiento sin sacrificar la
funcionalidad.

En la tabla siguiente se muestran los proveedores de datos de .NET Framework que se incluyen en .NET
Framework.

4
Proveedor de datos de .NET
Framework Descripción

Proveedor de datos de .NET Proporciona acceso de datos para Microsoft SQL Server versión 7.0 o posterior. Utiliza el espacio de
Framework para SQL Server nombres System.Data.SqlClient.

Proveedor de datos de .NET Para orígenes de datos que se exponen mediante OLE DB. Utiliza el espacio de nombres
Framework para OLE DB System.Data.OleDb.

Proveedor de datos de .NET Para orígenes de datos que se exponen mediante ODBC. Utiliza el espacio de nombres System.Data.Odbc.
Framework para ODBC

Proveedor de datos de .NET Para orígenes de datos de Oracle. El proveedor de datos de .NET Framework para Oracle es compatible
Framework para Oracle con la versión 8.1.7 y posteriores del software de cliente de Oracle y utiliza el espacio de nombres
System.Data.OracleClient.

Nota

Objetos principales de los proveedores de datos de .NET Framework

En la tabla siguiente se describen los cuatro objetos centrales que constituyen un proveedor de datos de .NET
Framework.

Objeto Descripción

Connection Establece una conexión a un origen de datos determinado. La clase base para todos los objetos Connection es DbConnection.

Command Ejecuta un comando en un origen de datos. Expone Parameters y puede ejecutarse en el ámbito de un objeto Transaction
de Connection. La clase base para todos los objetos Command es DbCommand.

DataReader Lee una secuencia de datos de sólo avance y sólo lectura desde un origen de datos. La clase base para todos los objetos
DataReader es DbDataReader.

DataAdapter Llena un DataSet y realiza las actualizaciones necesarias en el origen de datos. La clase base para todos los objetos
DataAdapter es DbDataAdapter.

DataSet de ADO.NET
El objeto DataSet es esencial para la compatibilidad con situaciones de datos distribuidos desconectados con
ADO.NET. El DataSet es una representación de datos residente en memoria que proporciona un modelo de
programación relacional coherente con independencia del origen de datos. Se puede utilizar con muchos y
distintos orígenes de datos, con datos XML o para administrar datos locales de la aplicación. El DataSet
representa un conjunto completo de datos que incluye tablas relacionadas y restricciones, así como relaciones
entre las tablas. En la siguiente ilustración se muestra el modelo de objetos DataSet.

Modelo de objetos DataSet

5
Los métodos y objetos de un DataSet concuerdan con los del modelo de base de datos relacional.

El DataSet también puede mantener y recargar su contenido como XML y su esquema como esquema de lenguaje
de definición de esquemas XML (XSD).

Conectar con datos y recuperarlos en ADO.NET


La principal función de cualquier aplicación de base de datos es conectarse a un origen de datos y recuperar los
datos contenidos . Los proveedores de datos de .NET Framework para ADO.NET sirven como puente entre una
aplicación y un origen de datos, permitiéndole ejecutar comandos y recuperar datos mediante un DataReader o
un DataAdapter.

Conectar a orígenes de datos


En ADO.NET se utiliza un objeto Connection para conectar con un determinado origen de datos mediante una
cadena de conexión en la que se proporciona la información de autenticación necesaria. El objeto Connection
utilizado depende del tipo de origen de datos.

Cada proveedor de datos de .NET Framework incluido en .NET Framework cuenta con un objeto Connection: el
proveedor de datos de .NET Framework para OLE DB incluye un objeto OleDbConnection, el proveedor de datos
de .NET Framework para SQL Server incluye un objeto SqlConnection, el proveedor de datos de .NET Framework
para ODBC incluye un objeto OdbcConnection y el proveedor de datos de .NET Framework para Oracle incluye un
objeto OracleConnection.

Trabajo con DataAdapters


Un DataAdapter se utiliza para recuperar datos de un origen de datos y llenar tablas con un DataSet. El
DataAdapter también resuelve los cambios realizados en el DataSet de vuelta al origen de datos. Mediante el
objeto Connection del proveedor de datos de .NET Framework, DataAdapter se conecta a un origen de datos
y utiliza objetos Command para recuperar datos del origen de datos y resolver los cambios a dicho origen.

6
Cada proveedor de datos de .NET Framework incluido en .NET Framework cuenta con un objeto DataAdapter:
el proveedor de datos de .NET Framework para OLE DB incluye un objeto OleDbDataAdapter, el proveedor de
datos de .NET Framework para SQL Server incluye un objeto SqlDataAdapter, el proveedor de datos de .NET
Framework para ODBC incluye un objeto OdbcDataAdapter y el proveedor de datos de .NET Framework para
Oracle incluye un objeto OracleDataAdapter.

Llenar un DataSet desde un DataAdapter


DataSet de ADO.NET es una representación residente en memoria de datos que proporciona un modelo de
programación relacional coherente e independiente del origen de los datos. DataSet representa un conjunto
completo de datos que incluye restricciones y tablas, así como relaciones entre estas últimas. Dado que DataSet
es independiente del origen de datos, puede incluir datos locales de la aplicación, así como datos de otros muchos
orígenes. La interacción con los orígenes de datos existentes se controla mediante el DataAdapter.

La propiedad SelectCommand del DataAdapter es un objeto Command que recupera datos del origen de
datos. Las propiedades InsertCommand, UpdateCommand y DeleteCommand de DataAdapter son objetos
Command que permiten administrar las actualizaciones de los datos en el origen de datos para reflejar las
modificaciones efectuadas en el DataSet. Estas propiedades se describen más detalladamente en Actualizar
orígenes de datos con DataAdapters.

El método Fill del DataAdapter se usa para llenar un DataSet con los resultados de la propiedad
SelectCommand del DataAdapter. El método Fill acepta como argumentos un DataSet que se debe llenar y
un objeto DataTable, o su nombre, que se debe llenar con las filas que devuelve SelectCommand.

El método Fill utiliza el objeto DataReader de forma implícita para devolver los nombres y tipos de columna
utilizados para crear las tablas de DataSet, así como los datos para llenar las filas de las tablas de DataSet. Las
tablas y columnas sólo se crean cuando no existen; en caso contrario, Fill utiliza el esquema existente de
DataSet. Los tipos de columna se crean como tipos de .NET Framework conforme se indica en las tablas que
aparecen en Asignar los tipos de datos del proveedor de datos de .NET para los tipos de datos de .NET Framework.
No se crean claves principales a menos que existan en el origen de datos y se haya dado el valor
MissingSchemaAction.AddWithKey a DataAdapter.MissingSchemaAction. Si el

método Fill determina que una tabla tiene clave principal, sobrescribe los datos del DataSet con los del origen
de datos en aquellas filas en las que los valores de la columna de clave principal coincidan con los de la fila que
devuelve el origen de datos. Si no se detecta ninguna clave principal, los datos se anexan a las tablas del DataSet.
Fill utiliza cualquier asignación que pueda existir al llenar el DataSet (vea Configurar las asignaciones de
DataTable y DataColumn).

Nota

Si SelectCommand devuelve los resultados de una combinación externa (OUTER JOIN), DataAdapter no establecerá un valor
PrimaryKey para la tabla DataTable resultante. Es necesario definir PrimaryKey para asegurarse de que las filas duplicadas se resuelven
correctamente. Para obtener más información, vea Definir una clave principal para una tabla.
En el ejemplo de código siguiente se crea una instancia de un SqlDataAdapter que utiliza un objeto SqlConnection
a la base de datos Northwind de Microsoft SQL Server y llena una DataTable en un DataSet con la lista de
clientes. La instrucción SQL y los argumentos SqlConnection pasados al constructor SqlDataAdapter se utilizan
para crear la propiedad SelectCommand del SqlDataAdapter.

Ejemplo

' Assumes that connection is a valid SqlConnection object.

7
Dim queryString As String = _
"SELECT CustomerID, CompanyName FROM dbo.Customers"

Dim adapter As SqlDataAdapter = New SqlDataAdapter( _


queryString, connection)

Dim customers As DataSet = New DataSet


adapter.Fill(customers, "Customers")

Utilizar parámetros con DataAdapter


DataAdapter dispone de cuatro propiedades que se utilizan para recuperar y actualizar datos en un origen de
datos: la propiedad SelectCommand devuelve datos a partir del origen de datos; las
propiedadesInsertCommand, UpdateCommand y DeleteCommand se utilizan para administrar cambios en
el origen de datos. La propiedad SelectCommand se debe establecer antes de llamar al método Fill de
DataAdapter. Es necesario establecer las propiedades InsertCommand, UpdateCommand o
DeleteCommand antes de llamar al método Update del DataAdapter, en función de las modificaciones
realizadas en los datos en el DataSet [ http://msdn2.microsoft.com/es-
es/library/system.data.dataset(VS.80).aspx ] . Por ejemplo, si se han agregado filas, se debe establecer la
propiedad InsertCommand antes de llamar a Update. Cuando Update procesa una fila insertada, actualizada
o eliminada, DataAdapter utiliza la propiedad Command adecuada para la acción en cuestión. La información
actual relacionada con la fila modificada se pasa al objeto Command a través de la colección Parameters.

Al actualizar una fila en el origen de datos, se llama a la instrucción UPDATE que utiliza un identificador único
para identificar la fila de la tabla que debe actualizarse. El identificador único suele ser el valor del campo de
clave principal. La instrucción UPDATE utiliza parámetros que contienen el identificador único y las columnas y
valores que se van a actualizar, como muestra la siguiente instrucción Transact-SQL.

UPDATE Customers SET CompanyName = @CompanyName

WHERE CustomerID = @CustomerID

8
Agregar una fuente de datos desde Visual Studio 2010

 Mostrar registros:
Me.ProductosTableAdapter.Fill(Me.NegocioDataSet.Productos)
Sería como un SELECT de SQL

 Insertar nuevo registro:


Dim Posicion as Byte
Dim xRow as DataRow
xRow = Me.NegociodataSet.Tables(“Productos”).NewRow
xRow(“PCod”) = “P012”
xRow(“VNom”) = “Alfajor Jorgito”
xRow(“Peso”) = 100
xRow(“Color”) = “negro”
Posicion = DataGridView.RowCount
Me.NegocioDataSet.Tables(“Productos”).Rows(InsertAt(xRow, Fila)
Me.ProductostableAdapter.Update(Me.NegocioDataSet)

9
DataGridView.Update()
Sería como un INSERT de SQL

 Modificar un registro:
Dim Posicion as Byte
Posicion = txtPosicion.text – 1
Me.NegocioDataSet.Productos.Rows(Posicion).Item(“Precio”) = NuevoPrecio
Me.ProductostableAdapter.Update(Me.NegocioDataSet)
DataGridView.Update()
Sería como un UPDATE de SQL

 Eliminar un registro:
Dim Posicion as Byte
Posicion = txtPosicion.text - 1
Me.NegocioDataSet.Productos.Rows(Posicion).Delete()
Me.ProductostableAdapter.Update(Me.NegocioDataSet)
DataGridView.Update()
Sería como un DELETE de SQL

10

Вам также может понравиться