Está en la página 1de 17

Informacin general acerca de ADO.

NET
ADO.NET proporciona acceso coherente a orgenes de datos como Microsoft SQL Server y XML, as como a orgenes de datos expuestos mediante OLE DB y ODBC. Las aplicaciones para usuarios que comparten datos pueden utilizar ADO.NET para conectar a estos orgenes de datos y recuperar, manipular y actualizar los datos contenidos. ADO.NET separa el acceso a datos de la manipulacin 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 propsito especfico, combinados con datos de varios orgenes, o de utilizarlos de forma remota entre niveles. El objeto DataSet de ADO.NET tambin puede utilizarse independientemente de un proveedor de datos de .NET Framework para administrar datos que son locales de la aplicacin o que proceden de un origen XML. Las clases de ADO.NET se encuentran en el archivo System.Data.dll y estn integradas con las clases de XML que se encuentran en el archivo System.Xml.dll. Cuando se compila un cdigo que utiliza el espacio de nombres System.Data, es necesario hacer referencia a los archivos System.Data.dll y System.Xml.dll. Para obtener un ejemplo de una aplicacin de ADO.NET que se conecta a una base de datos, recupera datos de sta y, a continuacin, los muestra en el smbolo del sistema, vea Aplicacin de ejemplo de ADO.NET. ADO.NET proporciona funcionalidad a los programadores que escriben cdigo administrado similar a la funcionalidad que los objetos ADO (ActiveX Data Objects) proporcionan a los programadores de modelo de objetos componentes (COM) nativo. Para obtener ms informacin sobre las diferencias entre ADO y ADO.NET, vea ADO.NET for the ADO Programmer en MSDN.

Objetivos de diseo para ADO.NET


A medida que la programacin de aplicaciones ha evolucionado, las nuevas aplicaciones se han convertido en aplicaciones de correspondencia imprecisa basadas en el modelo de aplicacin Web. Las aplicaciones de hoy en da utilizan cada vez ms XML para codificar datos que se van a pasar a travs de conexiones de red. Las aplicaciones Web utilizan HTTP para las comunicaciones entre niveles y, por tanto, deben controlar expresamente el mantenimiento del estado de una solicitud a otra. Este nuevo modelo es muy diferente del estilo de programacin con conexin y de correspondencia precisa que caracterizaba la poca cliente-servidor, en la que una conexin permaneca abierta durante toda la vida del programa y no haca falta controlar el estado. A la hora de disear herramientas y tecnologas para satisfacer las necesidades del programador de hoy en da, Microsoft se dio cuenta de que haca falta un modelo de programacin totalmente nuevo para el acceso a datos, un modelo basado en .NET Framework. Tomar .NET Framework como base garantizaba que la tecnologa de acceso a datos sera uniforme: los componentes compartiran un sistema de tipos, unos modelos de diseo y unas convenciones de nomenclatura. ADO.NET se dise para cumplir con los objetivos de este nuevo modelo de programacin: arquitectura de datos sin mantener una conexin abierta, estrecha integracin con XML, representacin comn de datos con la posibilidad de combinar datos procedentes de mltiples y variados orgenes, y servicios optimizados para interactuar con una base de datos, todo ello nativo de .NET Framework. A la hora de crear ADO.NET, Microsoft se propuso los siguientes objetivos de diseo:

Aprovechar la tecnologa de objetos ADO (ActiveX Data Objects) actuales. Admitir el modelo de programacin n-tier Integrar la compatibilidad con XML

Aprovechar los conocimientos actuales de ADO


El diseo de ADO.NET satisface muchos de los requisitos del modelo de desarrollo de aplicaciones de hoy en da. Al mismo tiempo, el modelo de programacin 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 intrnseca de .NET Framework y al programador de ADO le sigue resultando familiar. ADO.NET tambin coexiste con ADO. Aunque la mayora de las nuevas aplicaciones basadas en .NET se escribirn mediante ADO.NET, ADO sigue estando disponible para el programador de .NET a travs de los servicios de interoperabilidad COM de .NET. Para obtener ms informacin sobre las diferencias entre ADO y ADO.NET, vea ADO.NET for the ADO Programmer.

Admitir el modelo de programacin N-Tier


La idea de trabajar con un conjunto de datos sin mantener una conexin abierta se ha convertido en un objetivo del modelo de programacin. ADO.NET proporciona compatibilidad de primera clase con el entorno de programacin n-tier sin mantener una conexin abierta para el que estn escritas muchas aplicaciones nuevas. La solucin de ADO.NET para la programacin n-tier es el DataSet. Para obtener ms informacin sobre DataSets, vea Utilizar DataSets en ADO.NET.

Integrar la compatibilidad con XML


XML y el acceso a datos estn estrechamente relacionados. XML trata la codificacin de datos y el acceso a datos trata cada vez ms sobre XML. .NET Framework no slo admite los estndares 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: estn 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 diseo de ambos.

Arquitectura de ADO.NET
Tradicionalmente, el procesamiento de datos ha dependido principalmente de un modelo de dos niveles basado en una conexin. A medida que el procesamiento de datos utiliza cada vez ms arquitecturas de varios niveles, los programadores estn pasando a un enfoque sin conexin 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 diseados explcitamente para la manipulacin de datos y el acceso rpido a datos de slo lectura y slo 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 informacin sobre parmetros. 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 diseado para el acceso a datos independientemente del origen de datos. Como resultado, se puede utilizar con mltiples y distintos orgenes de datos, con datos XML o para administrar datos locales de la aplicacin. El DataSet contiene una coleccin de uno o ms objetos DataTable formados por filas y columnas de datos, as como informacin sobre claves principales, claves externas, restricciones y relaciones relativa a los datos incluidos en los objetos DataTable. En el diagrama siguiente se ilustra la relacin entre un proveedor de datos de .NET Framework y un DataSet. Arquitectura de ADO.NET

Elegir un DataReader o un DataSet


A la hora de decidir si su aplicacin debe utilizar un DataReader (vea Recuperar datos mediante DataReader) o un DataSet (vea Utilizar DataSets en ADO.NET), debe tener en cuenta el tipo de funcionalidad que su aplicacin requiere. Use un DataSet para hacer lo siguiente:

Almacene datos en la memoria cach de la aplicacin para poder manipularlos. Si solamente necesita leer los resultados de una consulta, el DataReader es la mejor eleccin. Utilizar datos de forma remota entre un nivel y otro o desde un servicio Web XML. Interactuar con datos dinmicamente, por ejemplo para enlazar con un control de formularios Windows Forms o para combinar y relacionar datos procedentes de varios orgenes. Realizar procesamientos exhaustivos de datos sin necesidad de tener una conexin abierta con el origen de datos, lo que libera la conexin para que la utilicen otros clientes.

Si no necesita la funcionalidad proporcionada por el DataSet, puede mejorar el rendimiento de su aplicacin si utiliza el DataReader para devolver sus datos de slo avance y de slo 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 utilizara el DataSet, adems de evitar el procesamiento necesario para crear y rellenar el contenido de DataSet.

XML y ADO.NET
ADO.NET aprovecha la eficacia de XML para proporcionar acceso a datos sin mantener una conexin abierta. ADO.NET fue diseado teniendo en cuenta las clases de XML incluidas en .NET Framework; ambos son componentes de una nica arquitectura. ADO.NET y las clases de XML incluidas en .NET Framework convergen en el objeto DataSet. El DataSet se puede llenar con datos procedentes de un origen XML, ya sea ste un archivo o una secuencia XML. El DataSet se puede escribir como XML compatible con el del Consorcio World Wide Web (W3C), incluyendo su esquema como esquema XSD (Lenguaje de definicin de esquemas XML), independientemente del origen de los datos incluidos en el DataSet. Puesto que el formato nativo de serializacin del DataSet es XML, es un medio excelente para mover datos de un nivel a otro, por lo que el DataSet es idneo para utilizar datos y contextos de esquemas de interaccin remota desde y hacia un servicio Web XML.

Requisitos de la plataforma ADO.NET


Microsoft .NET Framework SDK (incluido ADO.NET) es compatible con Microsoft Windows XP, Windows 2000, Windows NT 4 con Service Pack 6a, Windows Millennium Edition, Windows 98 y Windows CE.

Nota El proveedor de datos de .NET Framework para OLE DB y el proveedor de datos de .NET Framework para ODBC requieren MDAC 2.6 o posterior y se recomienda MDAC 2.8 Service Pack 1 (SP1). Puede descargar MDAC 2.8 SP1 de Data Access and Storage Developer Center. En el siguiente ejemplo de cdigo se muestra cmo incluir el espacio de nombres System.Data en las aplicaciones, para poder utilizar ADO.NET: Visual Basic Copiar cdigo

Impor t s Sys tem.Data


C# Copiar cdigo

us ing Sys tem.Data ;


Las clases de ADO.NET se encuentran en System.Data.dll y se integran con las clases de XML incluidas en System.Xml.dll. Al compilar cdigo que utiliza el espacio de nombres System.Data haga referencia tanto a System.Data.dll como a System.Xml.dll. Para obtener un ejemplo de una aplicacin de ADO.NET, vea Aplicacin de ejemplo de ADO.NET. Remoting or Marshaling Data Between Tiers and Clients El diseo del DataSet le permite transportar fcilmente datos a clientes a travs del Web mediante servicios Web XML, as como calcular referencias de los datos entre componentes de .NET mediante servicios .NET Remoting. Mediante los mismos servicios, tambin puede utilizar de forma remota un DataSet con establecimiento inflexible de tipos. Para obtener informacin general sobre servicios Web XML, vea Informacin general acerca de servicios Web XML. Para ver un ejemplo de cmo se utiliza un DataSet de un servicio Web XML, vea Consumir DataSet a partir de un servicio Web XML. Para obtener informacin general sobre servicios de interaccin remota, vea Informacin general de .NET Framework Remoting. Tenga en cuenta que en ADO.NET 2.0, los objetos DataTable tambin se pueden utilizar con servicios de interaccin remota y con servicios Web XML.

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 propsito especfico, combinarlos con datos de varios orgenes o utilizarlos de forma remota entre niveles. Los proveedores de datos de .NET Framework son ligeros, de manera que crean un nivel mnimo entre el origen de datos y su cdigo, 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.

Proveedor de datos de .NET Framework Proveedor de datos de .NET Framework para SQL Server Proveedor de datos de .NET Framework para OLE DB Proveedor de datos de .NET Framework para ODBC Proveedor de datos de .NET Framework para Oracle Nota

Descripcin Proporciona acceso de datos para Microsoft SQL Server versin 7.0 o posterior. Utiliza el espacio de nombres System.Data.SqlClient. Para orgenes de datos que se exponen mediante OLE DB. Utiliza el espacio de nombres System.Data.OleDb. Para orgenes de datos que se exponen mediante ODBC. Utiliza el espacio de nombres System.Data.Odbc. Para orgenes de datos de Oracle. El proveedor de datos de .NET Framework para Oracle es compatible con la versin 8.1.7 y posteriores del software de cliente de Oracle y utiliza el espacio de nombres System.Data.OracleClient.

El proveedor de datos de .NET Framework para ODBC y el proveedor de datos de .NET Framework para Oracle no se incluyeron originalmente en la versin 1.0 de .NET Framework. Si necesita utilizar el proveedor de datos de .NET Framework para ODBC o para Oracle, y est utilizando la versin 1.0 de .NET Framework, puede descargar dichos proveedores desde el sitio Data Access and Storage Developer Center. El espacio de nombres del proveedor de datos de .NET Framework para ODBC descargado es Microsoft.Data.Odbc. El espacio de nombres del proveedor de datos de .NET Framework para Oracle descargado es System.Data.OracleClient.

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 Connection Command

Descripcin Establece una conexin a un origen de datos determinado. La clase base para todos los objetos Connection es DbConnection. 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 slo avance y slo lectura desde un origen de datos. La clase base para todos los objetos DataReader es DbDataReader. DataAdapte Llena un DataSet y realiza las actualizaciones necesarias en el origen de datos. La clase base para todos los objetos DataAdapter es r DbDataAdapter.

Adems de las clases principales citadas en la tabla anterior, los proveedores de datos de .NET Framework tambin incluyen las que se enumeran en la tabla siguiente.

Objeto Transaction CommandBuilder

Descripcin Permite incluir comandos en las transacciones que se realizan en el origen de datos. La clase base para todos los objetos Transaction es DbTransaction. Un objeto auxiliar que genera automticamente las propiedades de comando de un DataAdapter o que obtiene de un procedimiento almacenado informacin acerca de parmetros con la que puede rellenar la coleccin Parameters de un objeto Command. La clase base para todos los objetos CommandBuilder es DbCommandBuilder.

ConnectionStringBuilder Un objeto auxiliar que proporciona un modo sencillo de crear y administrar el contenido de las cadenas de conexin utilizadas por los objetos Connection. La clase base para todos los objetos ConnectionStringBuilder es DbConnectionStringBuilder.

Parameter Exception

Define los parmetros de entrada, salida y valores devueltos para los comandos y procedimientos almacenados. La clase base para todos los objetos Parameter es DbParameter. Se devuelve cuando se detecta un error en el origen de datos. En el caso de que el error se detecte en el cliente, los proveedores de datos de .NET Framework inician una excepcin de .NET Framework. La clase base para todos los objetos Exception es DbException. Expone la informacin relacionada con una advertencia o error devueltos por un origen de datos. Se proporciona para los atributos de seguridad de acceso a cdigo de los proveedores de datos de .NET Framework. La clase base para todos los objetos ClientPermission es DBDataPermission.

Error ClientPermission

Proveedor de datos de .NET Framework para SQL Server


El proveedor de datos de .NET Framework para SQL Server utiliza su propio protocolo para comunicarse con SQL Server. Es ligero y presenta un buen rendimiento porque est optimizado para tener acceso a SQL Server directamente, sin agregar una capa OLE DB u ODBC. En la siguiente ilustracin se compara el proveedor de datos de .NET Framework para SQL Server y el proveedor de datos de .NET Framework para OLE DB. El proveedor de datos de .NET Framework para OLE DB se comunica con un origen de datos OLE DB tanto a travs del componente de servicio OLE DB, que proporciona agrupacin de conexiones y servicios de transaccin, como del proveedor OLE DB correspondiente al origen de datos.

Nota El proveedor de datos de .NET Framework para ODBC cuenta con una arquitectura similar a la del proveedor de datos de .NET Framework para OLE DB; por ejemplo, llama a un componente de servicio ODBC.

Comparacin entre el proveedor de datos de .NET Framework para SQL Server y el proveedor de datos de .NET Framework para OLE DB

Para utilizar el proveedor de datos de .NET Framework para SQL Server, debe tener acceso a SQL Server 7.0 o posterior. Las clases del proveedor de datos de .NET Framework para SQL Server se encuentran en el espacio de nombres System.Data.SqlClient. Para las versiones anteriores de SQL Server, utilice el proveedor de datos de .NET Framework para OLE DB con el proveedor OLE DB de SQL Server (SQLOLEDB). El proveedor de datos de .NET Framework para SQL Server admite tanto transacciones locales como distribuidas. En el caso de las transacciones distribuidas, el proveedor de datos de .NET Framework para SQL Server se inscribe automticamente y de forma predeterminada en una transaccin y obtiene los detalles de la misma desde los servicios de componentes de Windows o System.Transactions. Para obtener ms informacin, vea Realizacin de transacciones. En el siguiente ejemplo de cdigo se muestra cmo puede incluir el espacio de nombres System.Data.SqlClient en sus aplicaciones. Visual Basic Copiar cdigo

Impor t s Sys tem.Data .Sq lC l i en t


C# Copiar cdigo

us ing Sys tem.Data .Sq lC l i en t ;

Proveedor de datos de .NET Framework para OLE DB


El proveedor de datos de .NET Framework para OLE DB utiliza OLE DB nativo para permitir el acceso a datos mediante la interoperabilidad COM. El proveedor de datos de .NET Framework para OLE DB admite tanto transacciones locales como distribuidas. En el caso de las transacciones distribuidas, el proveedor de datos de .NET Framework para OLE DB se inscribe automticamente y de forma predeterminada en una transaccin y obtiene los detalles de la misma a travs de los servicios de componentes de Windows 2000. Para obtener ms informacin, vea Realizacin de transacciones. En la siguiente tabla se muestran los proveedores probados con ADO.NET.

Controlador SQLOLEDB MSDAORA Microsoft.Jet.OLEDB.4.0 Nota

Proveedor Proveedor OLE DB para SQL Server de Microsoft Proveedor OLE DB para Oracle de Microsoft Proveedor OLE DB para Microsoft Jet

No se recomienda el uso de una base de datos de Access (Jet) como origen de datos de aplicaciones multiproceso, como las aplicaciones ASP.NET. Si tiene que utilizar Access como origen de datos de una aplicacin ASP.NET, y no puede utilizar otra alternativa, como SQL Server o MSDE, tenga presente que las aplicaciones ASP.NET que se conectan a una base de datos de Access pueden presentar problemas de conexin, normalmente relacionados con los permisos de seguridad. Para obtener ayuda a la hora de solucionar los problemas de conexin que puedan presentarse al utilizar una base de datos de Access y ASP.NET, vea el artculo Q316675, "PRB: No puede conectar a base de datos de Access desde ASP.NET" en Microsoft Knowledge Base. El proveedor de datos de .NET Framework para OLE DB no admite las interfaces de la versin 2.5 de OLE DB. Los proveedores OLE DB que requieren compatibilidad con interfaces de la versin 2.5 de OLE DB no funcionarn correctamente con el proveedor de datos de .NET Framework para OLE DB. Entre ellos se incluye el proveedor OLE DB para Exchange de Microsoft y el proveedor OLE DB para Publicacin en Internet de Microsoft. El proveedor de datos de .NET Framework para OLE DB no funciona con el proveedor OLE DB para ODBC (MSDASQL). Para tener acceso a un origen de datos de ODBC mediante ADO.NET, utilice el proveedor de datos de .NET Framework para ODBC. Las clases del proveedor de datos de .NET Framework para OLE DB se encuentran en el espacio de nombres System.Data.OleDb. En el siguiente ejemplo de cdigo se muestra cmo puede incluir el espacio de nombres System.Data.OleDb en sus aplicaciones. Visual Basic Copiar cdigo

Impor t s Sys tem.Data .O leDb


C# Copiar cdigo

us ing Sys tem.Data .O leDb ;


Nota El proveedor de datos de .NET Framework para OLE DB requiere MDAC 2.6 o posterior y se recomienda el Service Pack 1 (SP1) de MDAC 2.8. Puede descargar MDAC 2.8 SP1 de Data Access and Storage Developer Center.

Proveedor de datos de .NET Framework para ODBC


El proveedor de datos de .NET Framework para ODBC utiliza el Administrador de controladores ODBC nativos para permitir el acceso a datos. El proveedor de datos de ODBC admite tanto transacciones locales como transacciones distribuidas. En el caso de las transacciones distribuidas, el proveedor de datos de ODBC se inscribe automticamente y de forma predeterminada en una transaccin y obtiene los detalles de la misma a travs de los servicios de componentes de Windows 2000. Para obtener ms informacin, vea Realizacin de transacciones.

En la siguiente tabla se muestran los controladores ODBC que se han probado con ADO.NET.

Controlador SQL Server Microsoft ODBC para Oracle Microsoft Access Driver (*.mdb) Las clases del proveedor de datos de .NET Framework para ODBC se encuentran en el espacio de nombres System.Data.Odbc. En el siguiente ejemplo de cdigo se muestra cmo puede incluir el espacio de nombres System.Data.Odbc en sus aplicaciones. Visual Basic Copiar cdigo

Impor t s Sys tem.Data .Odbc


C# Copiar cdigo

us ing Sys tem.Data .Odbc ;


Nota El proveedor de datos de .NET Framework para ODBC requiere MDAC 2.6 o posterior y se recomienda el SP1 de MDAC 2.8. Puede descargar MDAC 2.8 SP1 de Data Access and Storage Developer Center.

Proveedor de datos de .NET Framework para Oracle


El proveedor de datos de .NET Framework para Oracle permite el acceso a datos de orgenes de datos de Oracle mediante el software de conectividad de cliente de Oracle. El proveedor de datos es compatible con la versin 8.1.7 o posterior del software de cliente de Oracle. El proveedor de datos admite tanto transacciones locales como transacciones distribuidas. Para obtener ms informacin, vea Realizacin de transacciones. El proveedor de datos de .NET Framework para Oracle requiere que el software de cliente de Oracle (8.1.7 o posterior) est instalado en el sistema antes de conectarse a un origen de datos de Oracle. Las clases del proveedor de datos de .NET Framework para Oracle estn ubicadas en el espacio de nombres System.Data.OracleClient y se encuentran en el ensamblado System.Data.OracleClient.dll. Al compilar una aplicacin que utiliza el proveedor de datos, debe hacer referencia tanto a System.Data.dll como a System.Data.OracleClient.dll. En el siguiente ejemplo de cdigo se muestra cmo puede incluir el espacio de nombres System.Data.OracleClient en sus aplicaciones. Visual Basic Copiar cdigo

Impor t s Sys tem.DataImpor t s System.Data.OracleClient


C# Copiar cdigo

us ing System.Data; us ing System.Data.OracleClient;

Elegir un proveedor de datos de .NET Framework


En funcin del diseo y del origen de datos de su aplicacin, su eleccin del proveedor de datos de .NET Framework puede mejorar el rendimiento, la funcionalidad y la integridad de su aplicacin. En la siguiente tabla se describen las ventajas y las limitaciones de cada proveedor de datos de .NET Framework.

Proveedor Proveedor de datos de .NET Framework para SQL Server

Notas Recomendado para aplicaciones de nivel medio que utilizan Microsoft SQL Server 7.0 o posterior. Recomendado para aplicaciones de un nico nivel que utilizan Microsoft Database Engine (MSDE) o Microsoft SQL Server 7.0 o posterior. Recomendado en lugar de utilizar el proveedor OLE DB para SQL Server (SQLOLEDB) con el proveedor de datos de .NET Framework para OLE DB. En el caso de la versin 6.5 y versiones anteriores de SQL Server, debe utilizar el proveedor OLE DB para SQL Server con el proveedor de datos de .NET Framework para OLE DB. Recomendado para aplicaciones de nivel medio que utilizan SQL Server 6.5 o anterior. Para SQL Server 7.0 o posterior, se recomienda el proveedor de datos de .NET Framework para SQL Server. Tambin se recomienda para aplicaciones de un nico nivel que utilizan bases de datos de Microsoft Access. No se recomienda el uso de bases de datos Access para una aplicacin de nivel medio. Recomendado para aplicaciones de un nico nivel y de nivel medio que utilizan orgenes de datos de ODBC. Recomendado para aplicaciones de un nico nivel y de nivel medio que utilizan orgenes de datos de Oracle.

Proveedor de datos de .NET Framework para OLE DB

Proveedor de datos de .NET Framework para ODBC Proveedor de datos de .NET Framework para Oracle

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 representacin de datos residente en memoria que proporciona un modelo de programacin relacional coherente con independencia del origen de datos. Se puede utilizar con muchos y distintos orgenes de datos, con datos XML o para administrar datos locales de la aplicacin. El DataSet representa un conjunto completo de datos que incluye tablas relacionadas y restricciones, as como relaciones entre las tablas. En la siguiente ilustracin se muestra el modelo de objetos DataSet. Modelo de objetos DataSet

Los mtodos y objetos de un DataSet concuerdan con los del modelo de base de datos relacional.

El DataSet tambin puede mantener y recargar su contenido como XML y su esquema como esquema de lenguaje de definicin de esquemas XML (XSD). Para obtener ms informacin, vea Utilizar XML en un DataSet.

DataTableCollection
Un DataSet de ADO.NET contiene una coleccin de cero o ms tablas representadas por objetos DataTable. La DataTableCollection contiene todos los objetos DataTable de un DataSet. La DataTable se define en el espacio de nombres System.Data y representa una nica tabla de datos residentes en memoria. Contiene una coleccin de columnas representadas por una DataColumnCollection, as como restricciones representadas por una ConstraintCollection, que juntas definen el esquema de la tabla. Una DataTable tambin contiene una coleccin de filas representadas por la DataRowCollection, que contiene los datos de la tabla. Una DataRow conserva, junto con su estado actual, sus versiones actual y original para identificar los cambios en los valores almacenados en la fila.

DataRelationCollection
Un DataSet contiene relaciones en su objeto DataRelationCollection. Una relacin, representada por el objeto DataRelation, asocia las filas de una DataTable con las filas de otra DataTable. Las relaciones son anlogas a las rutas de acceso de unin que podran existir entre columnas de claves principales y externas en una base de datos relacional. Una DataRelation identifica las columnas coincidentes en dos tablas de un DataSet. Las relaciones permiten el desplazamiento entre tablas de un DataSet. Los elementos esenciales de una DataRelation son el nombre de la relacin, el nombre de las tablas que se relacionan y las columnas relacionadas de cada tabla. Es posible crear relaciones con ms de una columna por tabla si se especifica una matriz de objetos DataColumn como columnas de claves. Cuando agrega una relacin al DataRelationCollection, puede agregar opcionalmente una UniqueKeyConstraint y una ForeignKeyConstraint para imponer restricciones de integridad cuando se realizan cambios en valores de columna relacionados.

ExtendedProperties
DataSet, DataTable y DataColumn tienen todos una propiedad ExtendedProperties. ExtendedProperties es una PropertyCollection en la que puede colocar informacin personalizada, como la instruccin SELECT que se ha utilizado para generar el conjunto de resultados o la hora en que se generaron los datos. La coleccin ExtendedProperties se mantiene con la informacin de esquema del DataSet.

Aplicacin de ejemplo de ADO.NET


A continuacin se muestra una sencilla aplicacin de ADO.NET que devuelve resultados desde un origen de datos y los escribe en la consola o en el smbolo del sistema. En los ejemplos de este tema se muestra cmo conectarse a datos y cmo recuperarlos mediante el proveedor de datos de .NET Framework para SQL Server (System.Data.SqlClient), el proveedor de datos de .NET Framework para OLE DB (System.Data.OleDb), el proveedor de datos de .NET Framework para ODBC (System.Data.Odbc) y el proveedor de datos de .NET Framework para Oracle (System.Data.OracleClient). Es posible utilizar todos los proveedores de datos en una nica aplicacin, si as se desea. En el siguiente ejemplo de SqlClient se da por sentado que puede conectarse a la base de datos de ejemplo Northwind en Microsoft SQL Server 7.0 o posterior y se devuelve una lista de registros de la tabla Categories mediante un SqlDataReader. En los ejemplos de OleDb y Odbc se presupone una conexin a la base de datos de ejemplo Northwind de Microsoft Access. En el ejemplo de OracleClient se presupone una conexin a DEMO.CUSTOMER en un servidor Oracle. Tambin debe agregarse una referencia a System.Data.OracleClient.dll. Para obtener ms informacin sobre DataReader, vea Recuperar datos mediante DataReader).

SqlClient
Opt ion Exp l i c i t On Opt ion St r i c t On Impor t s Sys tem Impor t s Sys tem.Data Impor t s Sys tem.Data .Sq lC l i en t Pub l i c C lass Prog ram Pub l i c Shared Sub Main ( ) Dim connec t ionS t r ing As St r ing = GetConnec t ionS t r ing ( ) Dim queryS t r ing As St r ing = _ "SELECT Category ID , CategoryName FROM dbo .Ca tegor ies ; " Us ing connec t ion As New Sq lConnec t ion (connec t ionS t r ing ) Dim com mand As Sq lCom mand = connec t ion .C rea teCom mand( ) com mand .Com mandTex t = queryS t r ing Try connec t ion .Open( ) Dim dataReader As Sq lDa taReader = _ com mand .Execu teReader ( ) Do W le dataReade r .Read ( ) hi Conso le .Wr i teL ine (vbTab & "{0}" & vbTab & "{1}" , _ dataReader (0 ) , dataReader (1 ) ) Loop dataReade r .C lose ( ) Catch ex As Excep t ion Conso le .Wr i teL ine (ex .Message) End Try End Us ing End Sub Pr i va te Shared Func t ion GetConnec t ionS t r ing ( ) As St r ing ' To avo id s to r ing the connec t ion s t r ing i n your code , ' you can re t r i eve i t f rom a con f igu ra t i on f i l e . Retu rn "Da ta Source=( loca l ) ; I n i t i a l Cata log=Nor thw ind ; " _ & " In teg ra ted Secur i t y=SSP I ; " End Func t ion End C lass

Conectar con datos y recuperarlos en ADO.NET


La principal funcin de cualquier aplicacin 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 aplicacin y un origen de datos, permitindole ejecutar comandos y recuperar datos mediante un DataReader o un DataAdapter.

Conectar a orgenes de datos


En ADO.NET se utiliza un objeto Connection para conectar con un determinado origen de datos mediante una cadena de conexin en la que se proporciona la informacin de autenticacin 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.

Establecimiento de una conexin


Para conectarse a Microsoft SQL Server 7.0 o posterior, utilice el objeto SqlConnection del proveedor de datos de .NET Framework para SQL Server. Para conectarse a un origen de datos OLE DB o a Microsoft SQL Server 6.x o una versin anterior, utilice el objeto OleDbConnection del proveedor de datos de .NET Framework para OLE DB. Para conectarse a un origen de datos ODBC, utilice el objeto OdbcConnection del proveedor de datos de .NET Framework para ODBC. Para conectarse a un origen de datos Oracle, utilice el objeto OracleConnection del proveedor de datos de .NET Framework para ODBC. Para almacenar y recuperar de forma segura cadenas de conexin, vea Proteger cadenas de conexin.

Cierre de conexiones
Recomendamos cerrar siempre la conexin cuando termine de utilizarla, para que la conexin pueda regresar al grupo. El bloque Using de Visual Basic o C# elimina automticamente la conexin cuando el cdigo sale del bloque, incluso en el caso de una excepcin no controlada. Tambin puede utilizar los mtodos Close o Dispose del objeto de conexin correspondiente al proveedor que est utilizando. Es posible que las conexiones que no se cierran explcitamente no se puedan agregar ni puedan regresar al grupo. Por ejemplo, una conexin que se ha salido del mbito pero que no se ha cerrado explcitamente slo se devolver al grupo de conexin si se ha alcanzado el tamao mximo del grupo y la conexin an es vlida. Para obtener ms informacin, vea Descripcin de agrupacin de conexiones.

Nota No llame a Close o a Dispose en un objeto Connection, un objeto DataReader o cualquier otro objeto administrado en el mtodo Finalize de la clase. En un finalizador, libere slo los recursos no administrados que pertenezcan directamente a su clase. Si la clase no dispone de recursos no administrados, no incluya un mtodo Finalize en la definicin de clase. Para obtener ms informacin, vea Recoleccin de elementos no utilizados.

Conexin a SQL Server


El proveedor de datos de .NET Framework para SQL Server admite un formato de cadena de conexin que es similar al de OLE DB (ADO). Para ver los nombres y valores vlidos de formato de cadena, vea ConnectionString. El siguiente cdigo de ejemplo demuestra cmo crear y abrir una conexin a una base de datos SQL Server 7.0 o posterior.

' Assumes connectionString is a valid connection string. Using connection As New SqlConnection(connectionString)

connection.Open() ' Do work here. End Using

Trabajo con comandos


Una vez establecida una conexin a un origen de datos, puede ejecutar comandos y devolver resultados desde el mismo mediante un objeto Command. Para crear un comando, puede utilizar el constructor Command, que toma argumentos opcionales de una instruccin SQL para ejecutar en el origen de datos, un objeto Connection y un objeto Transaction. Tambin puede crear un comando para una determinada conexin mediante el mtodo CreateCommand del objeto Connection. La instruccin SQL del objeto Command se puede consultar y modificar mediante el uso de la propiedad CommandText. Cada proveedor de datos de .NET Framework incluido en .NET Framework cuenta con un objeto Command: el proveedor de datos de .NET Framework para OLE DB incluye un objeto OleDbCommand, el proveedor de datos de .NET Framework para SQL Server incluye un objeto SqlCommand, el proveedor de datos de .NET Framework para ODBC incluye un objeto OdbcCommand y el proveedor de datos de .NET Framework para Oracle incluye un objeto OracleCommand.

Ejecutar un comando
El objeto Command expone varios mtodos Execute que puede utilizar para llevar a cabo la accin deseada. Cuando los resultados se devuelven en forma de secuencia de datos, puede utilizar ExecuteReader para devolver un objeto DataReader. ExecuteScalar sirve para devolver un valor Singleton. ExecuteNonQuery se utiliza para ejecutar comandos que no devuelven filas. Al utilizar el objeto Command con un procedimiento almacenado, puede establecer la propiedad CommandType del objeto Command para que tenga el valor StoredProcedure. Cuando CommandType tiene el valor StoredProcedure, puede utilizar la propiedad Parameters del objeto Command para tener acceso a los parmetros de entrada y de salida y a los valores devueltos. Puede acceder a la propiedad Parameters independientemente del mtodo Execute llamado. Sin embargo, al llamar a ExecuteReader, no es posible el acceso a los valores devueltos y los parmetros de salida hasta que se cierra DataReader. En el siguiente ejemplo de cdigo se muestra cmo crear un objeto SqlCommand para devolver una lista de categoras de la base de datos de ejemplo Northwind de SQL Server.

Ejemplo
' nwindConn is assumed to be a valid SqlConnection object. Dim command As SqlCommand = New SqlCommand( _ "SELECT CategoryID, CategoryName FROM dbo.Categories", nwindConn)

Utilizar procedimientos almacenados con un comando


Los procedimientos almacenados ofrecen numerosas ventajas en el caso de aplicaciones que procesan datos. Mediante los procedimientos almacenados, las operaciones de bases de datos se pueden encapsular en un solo comando, se optimizan para lograr el mejor rendimiento y disfrutan de una seguridad adicional. Aunque es cierto que para llamar a un procedimiento almacenado basta con pasar en forma de instruccin SQL su nombre seguido de los argumentos de parmetros, el uso de la coleccin Parameters del objeto DbCommand de ADO.NET permite definir ms explcitamente los parmetros del procedimiento almacenado, as como tener acceso a los parmetros de salida y a los valores devueltos.

Para llamar a un procedimiento almacenado, establezca el CommandType del objeto Command como StoredProcedure. Al asignar el valor StoredProcedure a CommandType, puede utilizar la coleccin Parameters para definir parmetros, como se muestra en el ejemplo siguiente.
' Assumes that connection is a valid SqlConnection object. Dim salesCommand As SqlCommand = New SqlCommand( _ "SalesByCategory", connection) salesCommand.CommandType = CommandType.StoredProcedure Dim parameter As SqlParameter = salesCommand.Parameters.Add( _ "@CategoryName", SqlDbType.NVarChar, 15) parameter.Value = "Beverages" connection.Open() Dim reader As SqlDataReader = salesCommand.ExecuteReader() Console.WriteLine("{0}, {1}", reader.GetName(0), reader.GetName(1)) Do While reader.Read() Console.WriteLine("{0}, ${1}", reader.GetString(0), reader.GetDecimal(1)) Loop reader.Close() connection.Close()

Trabajo con DataReaders


Puede utilizar el DataReader de ADO.NET para recuperar secuencias de datos de slo lectura y slo avance de una base de datos. Los resultados se devuelven a medida que se ejecuta la consulta y se almacenan en el bfer de red del cliente hasta que se solicitan con el mtodo Read del DataReader. Con el DataReader puede aumentar el rendimiento de la aplicacin tanto al recuperar datos en cuanto estn disponibles como al almacenar (de forma predeterminada) una fila cada vez en memoria, lo que reduce la sobrecarga del sistema. Cada proveedor de datos de .NET Framework incluido en .NET Framework cuenta con un objeto DataReader: el proveedor de datos de .NET Framework para OLE DB incluye un objeto OleDbDataReader, el proveedor de datos de .NET Framework para SQL Server incluye un objeto SqlDataReader, el proveedor de datos de .NET Framework para ODBC incluye un objeto OdbcDataReader y el proveedor de datos de .NET Framework para Oracle incluye un objeto OracleDataReader.

Recuperar datos mediante DataReader


La recuperacin de datos mediante DataReader implica crear una instancia del objeto Command y de un DataReader a continuacin, para lo cual se llama a Command.ExecuteReader a fin de recuperar filas de un origen de datos. En el ejemplo siguiente se muestra cmo se utiliza un SqlDataReader, donde com mand vlido.
Dim reader As SqlDataReader = command.ExecuteReader()

representa un objeto SqlCommand

Puede utilizar el mtodo Read del objeto DataReader para obtener una fila a partir de los resultados de una consulta. Para tener acceso a cada columna de la fila devuelta, puede pasar a DataReader el nombre o referencia numrica de la columna en cuestin. Sin embargo, el mejor rendimiento se logra con los mtodos que ofrece DataReader y que permiten tener acceso a los valores de las columnas en sus tipos de datos nativos (GetDateTime, GetDouble, GetGuid, GetInt32, etc). Para obtener una lista de mtodos de descriptor de acceso con tipo para DataReaders de proveedores de datos especficos, vea las secciones OleDbDataReader y SqlDataReader. Si se utilizan los mtodos de descriptor de acceso con tipo, dando por supuesto que se conoce el tipo de datos subyacentes, se reduce el nmero de conversiones de tipo necesarias para recuperar el valor de una columna.

En el ejemplo de cdigo siguiente se repite por un objeto DataReader y se devuelven dos columnas de cada fila.
If reader.HasRows Then Do While reader.Read() Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", reader.GetInt32(0), reader.GetString(1)) Loop Else Console.WriteLine("No rows returned.") End If reader.Close()

DataReader proporciona una secuencia de datos sin bfer que permite a la lgica de los procedimientos procesar eficazmente y de forma secuencial los resultados procedentes de un origen de datos. DataReader es la mejor opcin cuando se trata de recuperar grandes cantidades de datos, ya que stos no se almacenan en la memoria cach.

Cerrar el DataReader
Siempre debe llamar al mtodo Close cuando haya terminado de utilizar el objeto DataReader. Si Command contiene parmetros de salida o valores devueltos, stos no estarn disponibles hasta que se cierre el DataReader. Tenga en cuenta que mientras est abierto un DataReader, ste utiliza de forma exclusiva el objeto Connection. No se podr ejecutar ningn comando para el objeto Connection hasta que se cierre el DataReader original, incluida la creacin de otro DataReader.

Nota No llame a Close o Dispose para objetos Connection o DataReader ni para ningn otro objeto administrado en el mtodo Finalize de su clase. En un finalizador, libere slo los recursos no administrados que pertenezcan directamente a su clase. Si la clase no dispone de recursos no administrados, no incluya un mtodo Finalize en la definicin de clase. Para obtener ms informacin, consulte Recoleccin de elementos no utilizados.

Varios conjuntos de resultados


En el caso en que se devuelvan varios resultados, el DataReader proporciona el mtodo NextResult para recorrer los conjuntos de resultados en orden. En el siguiente ejemplo se muestra el SqlDataReader mientras procesa los resultados de las dos instrucciones SELECT mediante el mtodo ExecuteReader.
' Assumes that connection is a valid SqlConnection object. Dim command As SqlCommand = New SqlCommand( _ "SELECT CategoryID, CategoryName FROM dbo.Categories;" & _ "SELECT EmployeeID, LastName FROM dbo.Employees", connection) connection.Open() Dim reader As SqlDataReader = command.ExecuteReader() Dim nextResult As Boolean = True Do Until Not nextResult Console.WriteLine(vbTab & reader.GetName(0) & vbTab & reader.GetName(1)) Do While reader.Read() Console.WriteLine(vbTab & reader.GetInt32(0) & vbTab & reader.GetString(1)) Loop

nextResult = reader.NextResult() Loop reader.Close() connection.Close()

Obtener informacin del esquema a partir del DataReader


Mientras hay abierto un DataReader, puede utilizar el mtodo GetSchemaTable para recuperar informacin del esquema acerca del conjunto actual de resultados. GetSchemaTable devuelve un objeto DataTable rellenado con filas y columnas que contienen la informacin del esquema del conjunto actual de resultados. DataTable contiene una fila por cada una de las columnas del conjunto de resultados. Cada columna de una fila de la tabla de esquema est asociada a una propiedad de la columna que se devuelve en el conjunto de resultados. ColumnName es el nombre de la propiedad y el valor de la columna es el de la propiedad. En el ejemplo de cdigo siguiente se muestra la informacin del esquema de DataReader.
Dim schemaTable As DataTable = reader.GetSchemaTable() Dim row As DataRow Dim column As DataColumn For Each row In schemaTable.Rows For Each column In schemaTable.Columns Console.WriteLine(column.ColumnName & " = " & row(column).ToString()) Next Console.WriteLine() Next

Trabajo con DataAdapters


Un DataAdapter se utiliza para recuperar datos de un origen de datos y llenar tablas con un DataSet. El DataAdapter tambin 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. 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 representacin residente en memoria de datos que proporciona un modelo de programacin 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 aplicacin, as como datos de otros muchos orgenes. La interaccin con los orgenes 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 ms detalladamente en Actualizar orgenes de datos con DataAdapters. El mtodo Fill del DataAdapter se usa para llenar un DataSet con los resultados de la propiedad SelectCommand del DataAdapter. El mtodo 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 mtodo Fill utiliza el objeto DataReader de forma implcita 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 slo 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 mtodo 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 asignacin que pueda existir al llenar el DataSet (vea Configurar las asignaciones de DataTable y DataColumn).

Nota Si SelectCommand devuelve los resultados de una combinacin 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 ms informacin, vea Definir una clave principal para una tabla. En el ejemplo de cdigo 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 instruccin 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. 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 parmetros 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 mtodo Fill de DataAdapter. Es necesario establecer las propiedades InsertCommand, UpdateCommand o DeleteCommand antes de llamar al mtodo Update del DataAdapter, en funcin de las modificaciones realizadas en los datos en el DataSet [ http://msdn2.microsoft.com/eses/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 accin en cuestin. La informacin actual relacionada con la fila modificada se pasa al objeto Command a travs de la coleccin Parameters. Al actualizar una fila en el origen de datos, se llama a la instruccin 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 instruccin UPDATE utiliza parmetros que contienen el identificador nico y las columnas y valores que se van a actualizar, como muestra la siguiente instruccin Transact-SQL.

UPDATE Customers SET CompanyName = @CompanyName WHERE CustomerID = @CustomerID

También podría gustarte