Descargar

Información general de ADO.NET

Enviado por miguel_tito733


    1. Conexiones
    2. Comandos
    3. Objetos DataReader
    4. Objetos DataSet y DataAdapter
    5. Resumen de la sección

    ADO.NET es una evolución del modelo de acceso a datos de ADO que controla directamente los requisitos del usuario para programar aplicaciones escalables. Se diseñó específicamente para el Web, teniendo en cuenta la escalabilidad, la independencia y el estándar XML.

    ADO.NET utiliza algunos objetos ADO, como Connection y Command, y también agrega objetos nuevos. Algunos de los nuevos objetos clave de ADO.NET son DataSet, DataReader y DataAdapter.

    La diferencia más importante entre esta fase evolucionada de ADO.NET y las arquitecturas de datos anteriores es que existe un objeto, DataSet, que es independiente y diferente de los almacenes de datos. Por ello, DataSet funciona como una entidad independiente. Se puede considerar el objeto DataSet como un conjunto de registros que siempre está desconectado y que no sabe nada sobre el origen y el destino de los datos que contiene. Dentro de un objeto DataSet, de la misma manera que dentro de una base de datos, hay tablas, columnas, relaciones, restricciones, vistas, etc.

    El objeto DataAdapter es el objeto que se conecta a la base de datos para llenar el objeto DataSet. A continuación, se vuelve a conectar a la base de datos para actualizar los datos de dicha base de datos a partir de las operaciones realizadas en los datos contenidos en el objeto DataSet. En el pasado, el procesamiento de datos se basaba principalmente en la conexión. Ahora, con el fin de proporcionar a las aplicaciones multinivel mayor eficacia, se está adoptando para el procesamiento de datos un enfoque basado en mensajes que manipulan fragmentos de información. En el centro de este enfoque se sitúa el objeto DataAdapter, que proporciona un puente entre un objeto DataSet y un almacén de datos de origen para recuperar y guardar datos. Para ello, envía solicitudes a los comandos SQL apropiados que se ejecutan en el almacén de datos.

    El objeto DataSet basado en XML proporciona un modelo de programación coherente que funciona con todos los modelos de almacenamiento de datos: sin formato, relacional o jerárquico. Funciona sin tener 'conocimiento' del origen de los datos y representa a los datos que contiene como colecciones y tipos de datos. Independientemente del origen de los datos del objeto DataSet, éstos se manipulan mediante el mismo conjunto de API estándar expuestas a través del objeto DataSet y sus objetos subordinados.

    Aunque el objeto DataSet no tiene conocimiento del origen de sus datos, el proveedor administrado tiene información detallada y específica. La función del proveedor administrado es conectar, llenar y almacenar el objeto DataSet desde almacenes de datos (o viceversa). Los proveedores de datos OLE DB y SQL Server de .NET (System.Data.OleDb y System.Data.SqlClient) que forman parte de .Net Framework proporcionan cuatro objetos básicos: Command, Connection, DataReader y DataAdapter. En el resto de las secciones de este documento, se describirá cada parte del objeto DataSet y los proveedores de datos OLE DB y SQL Server de .NET, con el fin de explicar qué son y cómo se pueden utilizar al programar.

    En las siguientes secciones se presentarán algunos objetos que han evolucionado desde la tecnología anterior y otros objetos nuevos. Los objetos son los siguientes:

    • Objetos Connection. Para conectar con una base de datos y administrar las transacciones en una base de datos.
    • Objetos Command. Para emitir comandos SQL a una base de datos.
    • Objetos DataReader. Proporcionan una forma de leer una secuencia de registros de datos sólo hacia delante desde un origen de datos SQL Server.
    • Objetos DataSet. Para almacenar datos sin formato, datos XML y datos relacionales, así como para configurar el acceso remoto y programar sobre datos de este tipo.
    • Objetos DataAdapter. Para insertar datos en un objeto DataSet y reconciliar datos de la base de datos.

    Nota al trabajar con conexiones a una base de datos, hay dos opciones diferentes: un proveedor de datos de SQL Server de .NET (System.Data.SqlClient) y un proveedor de datos OLE DB de .NET (System.Data.OleDb). En estos ejemplos se utilizará el proveedor de datos SQL Server de .NET. Están programados para comunicarse directamente con Microsoft SQL Server. El proveedor de datos OLE DB de .NET se utiliza para comunicarse con cualquier proveedor OLE DB (ya que utiliza OLE DB como tecnología subyacente).

    Conexiones

    Para establecer la comunicación con bases de datos, se utilizan las conexiones y se representan mediante clases específicas de proveedor, como SQLConnection. Los comandos viajan por las conexiones y devuelven conjuntos de resultados en forma de secuencias que puede leer un objeto DataReader o que se pueden insertar en un objeto DataSet.

    En el ejemplo siguiente se muestra la forma de crear un objeto de conexión. Las conexiones se pueden abrir explícitamente mediante llamadas al método Open de la conexión; también se pueden abrir implícitamente al utilizar un objeto DataAdapter.

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    VB AdoOverview1.aspx

    [] | [Ver código fuente]

    Comandos

    Los comandos contienen la información que se envía a una base de datos y se representan mediante clases específicas de un proveedor, como SQLCommand. Un comando podría ser una llamada a un procedimiento almacenado, una instrucción UPDATE o una instrucción que devuelve resultados. También es posible utilizar parámetros de entrada o de resultados y devolver valores como parte de la sintaxis del comando. En el ejemplo siguiente se muestra la forma de ejecutar una instrucción INSERT en la base de datos Northwind.

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    VB AdoOverview2.aspx

    [Ejecutar ejemplo] | [Ver código fuente]

    Objetos DataReader

    El objeto DataReader es, en cierto modo, sinónimo de un cursor de sólo lectura y sólo hacia delante para datos. La API de DataReader es compatible con datos sin formato y con datos jerárquicos. Cuando se ejecuta un comando en la base de datos, se devuelve un objeto DataReader. El formato del objeto DataReader devuelto es distinto de un conjunto de registros. Por ejemplo, podría utilizarse el objeto DataReader para mostrar los resultados de una lista de búsqueda en una página Web.

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    VB AdoOverview3.aspx

    [Ejecutar ejemplo] | [Ver código fuente

    Objetos DataSet y DataAdapter

    Objetos DataSet El objeto DataSet es similar al objeto Recordset de ADO, pero más eficaz y con una diferencia importante: DataSet siempre está desconectado. El objeto DataSet representa a una memoria caché de datos, con estructuras análogas a las de una base de datos, como tablas, columnas, relaciones y restricciones. Sin embargo, aunque se puede utilizar un objeto DataSet como una base de datos (y su comportamiento es muy similar), es importante recordar que los objetos DataSet no interactúan directamente con bases de datos ni con otros datos de origen. Esto permite al programador trabajar con un modelo de programación que siempre es coherente, independientemente de dónde resida el origen de datos. En los objetos DataSet se pueden colocar datos provenientes de una base de datos, un archivo XML, código o información escrita por el usuario. A continuación, a medida que se realizan cambios en el objeto DataSet, se puede hacer un seguimiento y una comprobación de los cambios antes de actualizar los datos de origen. El método GetChanges del objeto DataSet crea en realidad otro objeto DataSet que sólo contiene los cambios realizados en los datos. Posteriormente, un objeto DataAdapter u otros objetos, utilizan este objeto DataSet para actualizar el origen de datos original.

    El objeto DataSet tiene muchas características de XML, incluida la capacidad de producir y consumir datos XML y esquemas XML. Los esquemas XML se pueden utilizar para describir esquemas intercambiables a través de servicios Web. De hecho, un objeto DataSet con un esquema puede compilarse con seguridad de tipos y finalización automática de instrucciones.

    Objetos DataAdapter (OLEDB/SQL) El objeto DataAdapter funciona como un puente entre el objeto DataSet y los datos de origen. El uso del objeto SqlDataAdapter específico del proveedor (junto con los objetos SqlCommand y SqlConnection asociados) permite aumentar el rendimiento global al trabajar con bases de datos de Microsoft SQL Server. Para otras bases de datos compatibles con OLE DB, se debe utilizar el objeto OleDbDataAdapter y los objetos OleDbCommand y OleDbConnection asociados.

    El objeto DataAdapter utiliza comandos para actualizar el origen de datos después de hacer modificaciones en el objeto DataSet. Si se utiliza el método Fill del objetoDataAdapter, se llama al comando SELECT; si se utiliza el método Update se llama al comando INSERT, UPDATE o DELETE para cada fila modificada. Es posible establecer explícitamente estos comandos con el fin de controlar las instrucciones que se utilizan en tiempo de ejecución para resolver cambios, incluido el uso de procedimientos almacenados. En escenarios ad-hoc, un objeto CommandBuilder puede generarlos en tiempo de ejecución a partir de una instrucción de selección. Sin embargo, para generar en tiempo de ejecución hay que hacer un viaje de ida y vuelta adicional al servidor con el fin de recopilar los metadatos necesarios; por tanto, si se proporcionan explícitamente los comandos INSERT, UPDATE y DELETE en tiempo de diseño, el rendimiento en tiempo de ejecución mejorará.

    SqlConnection myConnection = new SqlConnection("server=(local)VSdotNET;Trusted_Connection=yes;database=northwind");

    SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter("select * from customers", myConnection);

    mySqlDataAdapter.InsertCommand.CommandText = "sp_InsertCustomer";

    mySqlDataAdapter.InsertCommand.CommandType = CommandType.StoredProcedure;

    mySqlDataAdapter.DeleteCommand.CommandText = "sp_DeleteCustomer";

    mySqlDataAdapter.DeleteCommand.CommandType = CommandType.StoredProcedure;

    mySqlDataAdapter.UpdateCommand.CommandText = "sp_UpdateCustomers";

    mySqlDataAdapter.UpdateCommand.CommandType = CommandType.StoredProcedure;

    Dim myConnection As SqlConnection = New SqlConnection("server=(local)VSdotNET;Trusted_Connection=yes;database=northwind")

    Dim mySqlDataAdapter As SqlDataAdapter = New SqlDataAdapter("select * from customers", myConnection)

    mySqlDataAdapter.InsertCommand.CommandText = "sp_InsertCustomer"

    mySqlDataAdapter.InsertCommand.CommandType = CommandType.StoredProcedure

    mySqlDataAdapter.DeleteCommand.CommandText = "sp_DeleteCustomer"

    mySqlDataAdapter.DeleteCommand.CommandType = CommandType.StoredProcedure

    mySqlDataAdapter.UpdateCommand.CommandText = "sp_UpdateCustomers"

    mySqlDataAdapter.UpdateCommand.CommandType = CommandType.StoredProcedure

    C#

    VB

     

    mySqlDataAdapter.Update(myDataSet);

    mySqlDataAdapter.Update(myDataSet)

    C#

    VB

    Los registros se asignan a los comandos correspondientes de la forma apropiada.

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    Figura: Objetos DataAdapter y DataSet

    En el ejemplo siguiente se ilustra la carga de un objeto DataAdapter a través de una instrucción SELECT. A continuación, se actualizan, eliminan y agregan algunos registros en el objeto DataSet. Por último, se devuelven las actualizaciones a la base de datos de origen a través del objeto DataAdapter. En la página, se muestran los comandos DeleteCommand, InsertCommand y UpdateCommand creados. También se ilustra el uso de varios objetos DataAdapter para cargar varias tablas (Customers y Orders) en el objeto DataSet.

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    VB AdoOverview4.aspx

    [Ejecutar ejemplo] | [Ver código fuente]

    Resumen de la sección

    1. La tecnología ADO.NET, integrada en .Net Framework, es el siguiente estado de evolución de ADO.
    2. Se diseñó teniendo en cuenta los modelos multinivel, la independencia y el estándar XML. Para estos escenarios se proporcionan dos objetos nuevos, DataSet y DataAdapter.
    3. Se puede utilizar ADO.NET para obtener datos de una secuencia o para almacenar datos en una memoria caché a fin de realizar actualizaciones.
    4. La documentación contiene mucha más información acerca de ADO.NET.
    5. Hay que tener en cuenta que se puede ejecutar un comando directamente en la base de datos para realizar inserciones, actualizaciones y eliminaciones. Para insertar, actualizar o eliminar datos no hay que colocarlos primero en un objeto DataSet.
    6. Además, se puede utilizar un objeto DataSet para enlazar con los datos, examinarlos y explorar sus relaciones.

    Miguel Tito