Información general sobre cómo rellenar conjuntos de datos y consultar datos

Actualización: noviembre 2007

El mecanismo típico de Visual Studio para ejecutar consultas Transact-SQL y para rellenar conjuntos de datos es el TableAdapter.

Puede ejecutar instrucciones SQL o procedimientos almacenados en un origen de datos mediante TableAdapters u objetos de comando (por ejemplo, SqlCommand). Para cargar datos en conjuntos de datos creados mediante las herramientas de diseño en Visual Studio, use TableAdapters. Para cargar datos en conjuntos de datos creados mediante programación, utilice adaptadores de datos. Si su aplicación no usa conjuntos de datos, utilice los objetos de comando para ejecutar instrucciones SQL o procedimientos almacenados directamente contra una base de datos.

Para obtener más información...

Vea

Rellenar un conjunto de datos mediante un TableAdapter

Cómo: Llenar un conjunto de datos con datos

TableAdapters

Información general sobre TableAdapter

Rellenar un conjunto de datos con un adaptador de datos

Rellenar un objeto DataSet desde un objeto DataAdapter (ADO.NET)

Rellenar conjuntos de datos

Si crea un conjunto de datos con una herramienta en tiempo de diseño de Visual Studio (como el Diseñador de DataSet o el Asistente para la configuración de orígenes de datos), deberá usar un TableAdapter para rellenarlo. Los TableAdapters ejecutan las instrucciones SQL o procedimientos almacenados.

Si crea un conjunto de datos sin herramientas en tiempo de diseño, deberá utilizar los adaptadores de datos para rellenar y actualizar los datos. (Los TableAdapters no son realmente clases de .NET Framework 3,5, por lo que no son adecuados para trabajar con conjuntos de datos creados sin utilizar herramientas en tiempo de diseño). Para obtener más información sobre cómo cargar datos en conjuntos de datos con TableAdapters o adaptadores de datos, vea Cómo: Llenar un conjunto de datos con datos.

Consultas de TableAdapter

Se pueden ejecutar consultas de TableAdapter para rellenar los datos en conjuntos de datos (más específicamente, cargar datos en las DataTables que constituyen un conjunto de datos). Se puede crear consultas de TableAdapter utilizando Asistente para la configuración de consultas de TableAdapter en el Diseñador de DataSet. Las consultas de TableAdapter aparecen como métodos con nombre en un TableAdapter y se ejecutan llamando al método TableAdapter. Para obtener más información sobre cómo crear y ejecutar consultas de TableAdapter, vea las páginas siguientes:

Objetos Command

Los objetos de comando proporcionan la capacidad de ejecutar instrucciones SQL y procedimientos almacenados directamente contra una base de datos, sin necesidad de un DataSet, TableAdapter o DataAdapter. (El término objeto de comando se refiere al comando concreto para el proveedor de datos de .NET Framework que utiliza su aplicación. Por ejemplo, si su aplicación está utilizando el Proveedor de datos de .NET Framework para servidor SQL Server, el objeto de comando sería SqlCommand.)

El usuario configura comandos para consultar datos utilizando instrucciones SQL o procedimientos almacenados mediante el establecimiento de la propiedad CommandType del comando de datos en uno de los valores en la enumeración CommandType. Establezca el CommandType en Text para ejecutar instrucciones SQL o establézcalo en StoredProcedure para ejecutar procedimientos almacenados. A continuación, establezca la propiedad CommandText en una instrucción SQL o el nombre del procedimiento almacenado. Entonces puede ejecutar el comando de datos llamando a uno de sus métodos de ejecución (ExecuteReader, ExecuteScalar, ExecuteNonQuery).

Cada uno de los .Proveedores de datos de .NET Framework (ADO.NET) ofrece un objeto de comando optimizado para bases de datos concretas.

Con los comandos de datos, puede realizar las siguientes acciones en la aplicación:

  • Ejecutar comandos Select que devuelvan un resultado que se pueda leer directamente, en vez de cargarlo en un conjunto de datos. Para leer los resultados, utilice un lector de datos (OleDbDataReader, SqlDataReader, OdbcDataReader o el objeto OracleDataReader), el cual funciona como un cursor de sólo lectura y sólo hacia delante, al que puede enlazar los controles. Ésta es una estrategia útil para reducir el uso de memoria y cargar datos de sólo lectura muy rápido.

  • Ejecutar comandos de definición de base de datos (DDL) para crear, editar y quitar tablas, procedimientos almacenados y otras estructuras de base de datos. Por supuesto, debe tener permisos para realizar estas acciones.

  • Ejecutar comandos para obtener información del catálogo de base de datos.

  • Ejecutar comandos SQL dinámicos para actualizar, insertar o eliminar registros, en vez de actualizar tablas de un conjunto de datos y, a continuación, copiar los cambios a la base de datos.

  • Ejecutar comandos que devuelvan un valor escalar (es decir, un valor único), como los resultados de una función de agregado (SUM, COUNT, AVG, etc.).

  • Ejecutar comandos que devuelvan datos de una base de datos de SQL Server (versión 7.0 o posterior) en formato XML. Un uso habitual es ejecutar una consulta y devolver datos en formato XML, aplicarle una transformación XSLT para convertir los datos a HTML y, a continuación, enviar el resultado a un explorador.

Las propiedades de un comando contienen toda la información necesaria para ejecutar un comando contra una base de datos. Esto incluye:

  • Una conexión   El comando hace referencia a una conexión que utiliza para comunicarse con la base de datos.

  • **El nombre o el texto de un comando   **El comando incluye el texto real de una instrucción SQL o el nombre de un procedimiento almacenado que se va a ejecutar.

  • Parámetros   Un comando podría requerir que se pasen valores de parámetros junto con el comando (parámetros de entrada). En comando también podría devolver valores en el formato de un valor devuelto o valores del parámetro de salida. Cada comando tiene una colección de parámetros que puede establecer o leer individualmente para pasar o recibir valores. Para obtener más información, vea Cómo: Establecer y obtener parámetros para objetos de comandos.

El usuario ejecuta un comando mediante un método apropiado de acuerdo con los resultados que espera obtener. Por ejemplo, si espera obtener filas, se invoca al método ExecuteReader del comando, el cual devuelve registros a un lector de datos. Si ejecuta un comando UPDATE, INSERT o DELETE, llamará al método ExecuteNonQuery, el cual devuelve un valor que indica el número de filas afectadas. Si realiza una función de agregado, como devolver el recuento de pedidos para un cliente, se llama al método ExecuteScalar.

Conjuntos de resultados múltiples

Un uso típico de un objeto de comando es devolver una tabla única de datos (un conjunto de filas). No obstante, los comandos de datos pueden ejecutar procedimientos que devuelvan conjuntos de resultados múltiples. Esto puede ocurrir de varias formas. Una forma es que el comando haga referencia a un procedimiento almacenado que devuelva varios conjuntos de resultados. El comando también puede tener dos (o más) instrucciones o nombres de procedimientos almacenados. En este caso, las instrucciones o los procedimientos se ejecutan secuencialmente y devuelven varios resultados con una única llamada.

Si especifica varias instrucciones o procedimientos para un comando, todos deben ser del mismo tipo. Por ejemplo, puede ejecutar instrucciones SQL o procedimientos almacenados sucesivos. No obstante, no puede mezclar llamadas a un procedimiento almacenado y a instrucciones SQL en el mismo comando. Para obtener más información, vea Recuperar datos mediante DataReader (ADO.NET).

Nota:

Para Oracle, el proveedor de datos de .NET Framework para Oracle no admite instrucciones SQL en lotes. Sin embargo, sí permite utilizar varios parámetros de salida REF CURSOR para llenar un conjunto de datos, cada uno en su propia tabla de datos. Debe definir los parámetros, marcarlos como parámetros de salida e indicar que son tipos de datos REF CURSOR. Tenga en cuenta que no podrá utilizar el método Update cuando el objeto OracleDataAdapter se llene con parámetros REF CURSOR en un procedimiento almacenado, porque Oracle no proporciona la información necesaria para determinar el nombre de la tabla y de las columnas cuando se ejecuta la instrucción SQL.

Seguridad

Al utilizar comandos de datos con una propiedad CommandType establecida en Text, compruebe minuciosamente la información enviada por un cliente antes de pasarla a la base de datos. Usuarios con malas intenciones podrían intentar enviar (inyectar) instrucciones SQL modificadas o adicionales con el fin de obtener acceso no autorizado o dañar la base de datos. Antes de transferir los datos proporcionados por el usuario a una base de datos, siempre debe comprobar que la información sea válida. Un procedimiento recomendado es utilizar consultas parametrizadas o procedimientos almacenados cuando sea posible.

Vea también

Otros recursos

Introducción a Data Access

Conectarse a datos en Visual Studio

Preparar la aplicación para recibir datos

Buscar datos en la aplicación

Mostrar datos en formularios en aplicaciones para Windows

Modificar datos en la aplicación

Validar datos

Guardar datos

Recursos de datos