Cómo controlar varios resultados utilizando DataReader en Visual C#.

Para una versión de Microsoft Visual Basic .NET de este artículo, consulte
309490 .

En este artículo se refiere a los siguientes espacios de nombres de biblioteca de clases de Microsoft.NET Framework:
  • System.Data.OleDb
  • System.Data.SqlClient

EN ESTA TAREA

Resumen

Este artículo contiene una función genérica que puede utilizar para procesar varios conjuntos de registros y otros mensajes devueltos de procedimientos almacenados o la ejecución de las instrucciones SQL por lotes.

Descripción técnica

ActiveX Data Objects (ADO) puede recibir cinco tipos diferentes de datos desde el servidor:
  • Conjunto de registros
  • Número de registros modificados por una consulta de acción (como INSERT, UPDATE, DELETE o SELECT INTO)
  • Mensaje informativo o advertencia
  • Mensaje de error:
  • Parámetros de salida y valores devueltos del procedimiento almacenado
Cuando se leen los resultados de una instrucción SQL por lotes, puede utilizar el método NextResult para poner el DataReader en el siguiente resultado del conjunto de resultados.

Requisitos

La lista siguiente describe el hardware, software, infraestructura de red y service packs recomendados que necesita:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server o Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server 7.0 o posterior
En este artículo se supone que está familiarizado con los temas siguientes:
  • Visual Studio .NET
  • Fundamentos ADO.NET y sintaxis

Crear el proyecto y agregar código

Este código de ejemplo utiliza la tabla Authors de la base de datos de ejemplo Pubs de SQL Server.
  1. Pegue las instrucciones siguientes en la herramienta Analizador de consultas SQL o la utilidad ISQL:
    CREATE PROC MyProcAS
    SELECT * FROM Authors
    SELECT * FROM Authors WHERE State = 'CA'
    GO

  2. Inicie Visual Studio. NET.
  3. Cree un nuevo proyecto de aplicación Windows en Visual .NET C#. Se agregará Form1 al proyecto de forma predeterminada.
  4. Asegúrese de que el proyecto contiene una referencia al espacio de nombres System.Data y agregue una referencia a este espacio de nombres si no es así.
  5. Ponga un botón Command en Form1. Cambie la propiedad Name del botón a btnTesty cambie la propiedad Text a prueba.
  6. Utilice la instrucción using en los espacios de nombres System, System.Data.OleDby System.Data.SqlClient para que no se le pida calificar declaraciones en esos espacios de nombres más adelante en el código. Agregue el código siguiente a la sección de declaraciones generales de Form1:
    using System;using System.Data.OleDb;
    using System.Data.SqlClient;

  7. Agregue el código siguiente al evento btnTest_Click :

    Nota: Debe cambiar el valor de identificador de usuario < nombre de usuario > cuenta a una cuenta que tenga los permisos adecuados para realizar estas operaciones en la base de datos.
        String myConnString  = "User ID=<username>;password=<strong password>;Initial Catalog=pubs;Data Source=myServer";    SqlConnection myConnection = new SqlConnection(myConnString);
    SqlCommand myCommand = new SqlCommand();
    SqlDataReader myReader ;

    myCommand.CommandType = CommandType.StoredProcedure;
    myCommand.Connection = myConnection;
    myCommand.CommandText = "MyProc";
    int RecordCount=0;

    try
    {
    myConnection.Open();
    myReader = myCommand.ExecuteReader();

    while (myReader.Read())
    {
    //Write logic to process data for the first result.
    RecordCount = RecordCount + 1;
    }
    MessageBox.Show("Total number of Authors: " + RecordCount.ToString());

    myReader.NextResult();
    RecordCount = 0;

    while (myReader.Read())
    {
    //Write logic to process data for the second result.
    RecordCount = RecordCount + 1;
    }
    MessageBox.Show("Authors from California: " + RecordCount.ToString());
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.ToString());
    }
    finally
    {
    myConnection.Close();
    }

  8. Modifique la cadena de conexión (myConnString) según corresponda para su entorno.
  9. Guardar el proyecto. En el menú Depurar , haga clic en Iniciar para ejecutar el proyecto.
  10. Haga clic en prueba. Observe que los cuadros de mensajes muestran los datos que devuelve el procedimiento almacenado.

Referencias

Para obtener información adicional acerca de cómo llamar a procedimientos almacenados, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
306574 cómo llamar a SQL Server procedimientos almacenados en ASP.NET
Para obtener información adicional acerca de control de errores, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
308650 cómo obtener errores de proveedor subyacentes utilizando ADO.NET en Visual C#.
Para obtener información adicional acerca de los parámetros y los procedimientos almacenados, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
308621 PRB: no se devuelven parámetros de salida cuando ejecuta un comando de ADO.NET en .NET Visual C#
Para obtener más información sobre los objetos ADO.NET y su sintaxis, consulte la siguiente documentación del Kit de desarrollo de Software (SDK) de Microsoft.NET Framework:
Propiedades

Id. de artículo: 311274 - Última revisión: 22 ene. 2017 - Revisión: 2

Comentarios