Id. de artículo: 309490 - Última revisión: domingo, 13 de mayo de 2007 - Versión: 3.2

Cómo controlar varios resultados utilizando DataReader en Visual Basic .NET

Este artículo se publicó anteriormente con el número E309490

En esta página

Expandir todo | Contraer todo

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 lea 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 describe el hardware, el software, la infraestructura de red y los Service Packs 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 da por supuesto que está familiarizado con los temas siguientes:
  • Visual Studio .NET
  • Fundamentos y sintaxis de ADO.NET

Crear el proyecto y agregar código

Este ejemplo de código utiliza la tabla Authors de la base de datos de ejemplo Pubs.
  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. Abra Visual Studio .NET.
  3. Cree un nuevo proyecto de aplicación para Windows de Visual Basic.
  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 Imports de los espacios de nombres System, System.Data.OleDb y System.Data.SqlClient de forma que no tenga que suministrar 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:
    Imports System
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    					
  7. Agregue el código siguiente después de la región "Código generado por el Diseñador de Windows Forms" en la ventana de código:

    Nota
    Debe cambiar el Id. de usuario junto a User ID y la contraseña junto a Password por los valores correctos antes de ejecutar este código. Asegúrese de que el Id. de usuario tiene los permisos apropiados para realizar esta operación en la base de datos.
        Private Sub btnTest_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles btnTest.Click
            Dim myConnString As String = _
                    "User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=myServer"
            Dim myConnection As New SqlConnection(myConnString)
            Dim myCommand As New SqlCommand()
            Dim myReader As SqlDataReader
    
            myCommand.CommandType = CommandType.StoredProcedure
            myCommand.Connection = myConnection
            myCommand.CommandText = "MyProc"
            Dim RecordCount As Integer
    
            Try
                myConnection.Open()
                myReader = myCommand.ExecuteReader
                While myReader.Read()
                    'Write logic to process data for the first result.
                    RecordCount = RecordCount + 1
                End While
                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
                End While
                 MessageBox.Show("Authors from California: " & RecordCount.ToString)
            Catch ex As Exception
                MessageBox.Show(ex.ToString())
            Finally
                myConnection.Close()
            End Try
        End Sub
    					
  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 y ejecute 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  (http://support.microsoft.com/kb/306574/ ) Cómo utilizar Visual Basic .NET para llamar a los procedimientos almacenados de SQL Server desde ASP.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:
308043  (http://support.microsoft.com/kb/308043/ ) Cómo obtener errores del proveedor subyacente utilizando ADO.NET en Visual Basic .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:
308051  (http://support.microsoft.com/kb/308051/ ) PRB: o se devuelven parámetros de salida cuando ejecuta un comando de ADO.NET en Visual Basic .NET
Para obtener más información acerca de los objetos de ADO.NET y su sintaxis, consulte lo siguiente en la documentación del Kit de desarrollo de software (SDK) de Microsoft .NET Framework:
Accessing Data with ADO.NET
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx)

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 Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Palabras clave: 
kbhowtomaster kbsqlclient kbsystemdata KB309490
 

Seleccione idioma