Cómo controlar varios resultados mediante DataReader en Visual C# .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 311274 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E311274
Expandir todo | Contraer todo

En esta página

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 instrucciones SQL por lotes.

Descripción de la técnica

ActiveX Data Objects (ADO) puede recuperar cinco tipos de datos diferentes del 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
  • Valores de retorno y parámetros de salida del procedimiento almacenado
Cuando lee el resultado 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

En la lista siguiente se indican el hardware, el software, la infraestructura de red y los Service Pack recomendados que necesitará:
  • 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 el presente artículo se supone que está familiarizado con los temas siguientes:
  • Visual Studio .NET
  • Fundamentos y sintaxis de ADO.NET

Crear un proyecto y agregar código

En este ejemplo de código se 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 de SQL o en la utilidad ISQL:
    CREATE PROC MyProc
    AS
        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 C# .NET. 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, si no es así, agregue una.
  5. Ponga un botón Command en Form1. Cambie la propiedad Name del botón a btnTest y cambie la propiedad Text a Probar.
  6. Utilice la instrucción using de los espacios de nombres System, System.Data.OleDb y System.Data.SqlClient para que no tenga que calificar las declaraciones de estos espacios de nombres más adelante en el código. Agregue el código siguiente en la sección General Declarations 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 <user name> del Id. de usuario por una cuenta que tenga los permisos necesarios 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) de acuerdo con su entorno.
  9. Guarde el proyecto. En el menú Depurar, haga clic en Iniciar para ejecutar el proyecto.
  10. Haga clic en Probar. Observe que los cuadros de mensajes muestran los datos devueltos por 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 procedimientos almacenados de SQL Server en ASP.NET mediante Visual Basic .NET
Para obtener información adicional acerca del 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# .NET
Para obtener información adicional acerca de os 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 Visual C# .NET
Para obtener más información acerca de los objetos y la sintaxis de ADO.NET, consulte la documentación siguiente del Kit de desarrollo de software (SDK) de Microsoft .NET Framework:
Acceso a datos con ADO.NET
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx

Propiedades

Id. de artículo: 311274 - Última revisión: domingo, 13 de mayo de 2007 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Palabras clave: 
kbhowtomaster kbsqlclient kbsystemdata KB311274

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com