Cómo: Ejecutar un procedimiento almacenado que devuelve filas

Para ejecutar un procedimiento almacenado que devuelve una fila, puede ejecutar una consulta de TableAdapter configurada para ejecutar un procedimiento almacenado (por ejemplo, CustomersTableAdapter.Fill(CustomersDataTable)).

Si su aplicación no utiliza TableAdapters, llame al método ExecuteReader en un objeto de comando, estableciendo su propiedad CommandType en StoredProcedure. (El objeto "Command" se refiere al comando concreto para el Proveedor de datos de .NET Framework que su aplicación está utilizando. Por ejemplo, si su aplicación utiliza el proveedor de datos de .NET Framework para el servidor SQL Server, el objeto de comando sería SqlCommand.)

Los ejemplos siguientes muestran cómo ejecutar los procedimientos almacenados que devuelven las filas de una base de datos utilizando TableAdapters u objetos de comando. Para obtener más información sobre cómo realizar consultas con TableAdapters y comandos, vea Rellenar los conjuntos de datos con datos.

Nota

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Para cambiar la configuración, elija la opción Importar y exportar configuraciones del menú Herramientas. Para obtener más información, vea Trabajar con valores de configuración.

Ejecutar procedimientos almacenados que devuelven filas utilizando un TableAdapter

Este ejemplo muestra cómo crear una consulta de TableAdapter mediante Asistente para la configuración de consultas de TableAdapter y, a continuación, proporciona información acerca de cómo declarar una instancia de TableAdapter y ejecutar la consulta.

Para crear un procedimiento almacenado que devuelve filas mediante un TableAdapter

  1. Abra un conjunto de datos en el Diseñador de Dataset. Para obtener más información, vea Cómo: Abrir un objeto Dataset en el Diseñador de Dataset.

  2. Si no tiene uno ya, cree un TableAdapter. Para obtener más información, vea Cómo: Crear TableAdapters.

  3. Si ya tiene una consulta en su TableAdapter que llama a un procedimiento almacenado que devuelve filas, omita el procedimiento siguiente, "Para declarar una instancia de TableAdapter y ejecutar la consulta". De lo contrario, continúe con el paso 4 para crear una nueva consulta que llama a un procedimiento almacenado que devuelve las filas.

  4. Haga clic con el botón secundario del mouse en el TableAdapter deseado y utilice el menú contextual para agregar una consulta.

    Se abre Asistente para la configuración de consultas de TableAdapter.

  5. Haga clic en Siguiente, elija Usar el procedimiento almacenado existente y, a continuación, haga clic en Siguiente.

  6. Seleccione un procedimiento almacenado en la lista desplegable y, a continuación, haga clic en Siguiente.

  7. Deje el valor predeterminado de Datos en formato de tabla y, a continuación, haga clic en Siguiente.

  8. Proporcione nombres para cada método que desee crear (métodos Rellenar un DataTable y/o Devolver un DataTable ).

  9. Finalice el asistente; la consulta se agrega al TableAdapter.

  10. Generar el proyecto.

Para declarar una instancia de TableAdapter y ejecutar la consulta

  1. Declare una instancia de TableAdapter que contenga la consulta que desea ejecutar.

    • Para crear una instancia mediante las herramientas en tiempo de diseño, arrastre el TableAdapter que desee desde el Cuadro de herramientas. (Los componentes del proyecto aparecen ahora en el Cuadro de herramientas debajo de un encabezado que coincide con el nombre del proyecto.) Si el TableAdapter no aparece en el Cuadro de herramientas, quizá deba generar su proyecto.

      O bien

    • Para crear una instancia de código, reemplace el código siguiente con los nombres de DataSet y TableAdapter.

      Dim tableAdapter As New DataSetTableAdapters.TableAdapter

      Nota

      La búsqueda de TableAdapters no se realiza realmente dentro de sus clases de conjunto de datos asociadas. Cada conjunto de datos tiene una colección correspondiente de TableAdapters en su propio espacio de nombres. Por ejemplo, si tiene un conjunto de datos denominado SalesDataSet, habrá un espacio de nombres SalesDataSetTableAdapters que contiene sus TableAdapters.

  2. Llame a su consulta como llamaría a cualquier otro método del código. Su consulta es un método de TableAdapter. Reemplace el código siguiente con los nombres de su TableAdapter y realice la consulta. También necesita pasar todos los parámetros requeridos por la consulta. Si no está seguro de si su consulta requiere parámetros, o qué parámetros requiere, busque en IntelliSense la firma necesaria de la consulta. Dependiendo de si su consulta toma parámetros o no, el código se parecería al de uno de los ejemplos siguientes:

    TableAdapter.Query()

    TableAdapter.Query(Parameters)

    TableAdapter.Query(DataTable, Parameters)

    El código completo para declarar una instancia de TableAdapter y ejecutar la consulta debe parecerse al siguiente:

    Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()
    tableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")
    
    NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = 
        new NorthwindDataSetTableAdapters.CustomersTableAdapter();
    
    tableAdapter.FillByCity(northwindDataSet.Customers, "Seattle");
    

Ejecutar los procedimientos almacenados que devuelven las filas utilizando un objeto de comando

El ejemplo siguiente muestra cómo crear un comando y ejecutar un procedimiento almacenado que devuelve las filas. Para obtener información sobre configurar y obtener los valores de parámetro para un comando, vea Cómo: Establecer y obtener parámetros para objetos de comandos.

Este ejemplo utiliza el objeto SqlCommand y requiere:

  • Referencias a los espacios de nombres System, System.Data y System.Xml .

  • Un conjunto de datos denominado SqlConnection1.

  • Una tabla denominada Customers en el origen de datos al que se conecta SqlConnection1. (De lo contrario, necesita una instrucción SQL válida para su origen de datos.)

Para ejecutar un procedimiento almacenado que devuelve filas mediante programación utilizando un objeto de comando

  • Agregue el código siguiente a un método desde el que desee ejecutar el código. Para devolver las filas llame al método ExecuteReader del comando (por ejemplo, ExecuteReader). Los datos se devuelven en un objeto DataReader. Para obtener más información sobre cómo tener acceso a los datos en un DataReader, vea Recuperar datos mediante DataReader (ADO.NET).

    Dim sqlConnection1 As New SqlConnection("Your Connection String")
    Dim cmd As New SqlCommand
    Dim reader As SqlDataReader
    
    cmd.CommandText = "StoredProcedureName"
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    
    reader = cmd.ExecuteReader()
    ' Data is accessible through the DataReader object here.
    
    sqlConnection1.Close()
    
    SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
    SqlCommand cmd = new SqlCommand();
    SqlDataReader reader;
    
    cmd.CommandText = "StoredProcedureName";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    reader = cmd.ExecuteReader();
    // Data is accessible through the DataReader object here.
    
    sqlConnection1.Close();
    

Seguridad

La aplicación necesita permiso para tener acceso a la base de datos y ejecutar el procedimiento almacenado.

Vea también

Tareas

Cómo: Crear consultas de TableAdapter

Cómo: Llenar un conjunto de datos con datos

Cómo: Establecer y obtener parámetros para objetos de comandos

Referencia

SqlCommand.ExecuteReader

OleDbCommand.ExecuteReader

OdbcCommand.ExecuteReader

OracleCommand.ExecuteReader

Conceptos

Rellenar los conjuntos de datos con datos