Artigo: 309490 - Última revisão: domingo, 13 de Maio de 2007 - Revisão: 3.3

Como processar vários resultados através do DataReader no Visual Basic .NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo contém uma função genérica que pode utilizar para processar vários conjuntos de registos e outras mensagens que são devolvidas a partir de procedimentos armazenados ou a execução de instruções de SQL de batch.

Descrição da técnica

ActiveX Data Objects (ADO) pode receber cinco tipos de dados do servidor:
  • Conjunto de registos
  • Número de registos que são modificados por uma consulta de acção (tal como INSERT, UPDATE, DELETE ou SELECT INTO)
  • Aviso ou mensagem informativa
  • Mensagem de erro
  • Procedimento armazenado devolvem valores e parâmetros de saída
Ao ler os resultados de uma secção de instrução de SQL, pode utilizar o método NextResult para posicionar DataReader no próximo resultado no conjunto de resultados.

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server ou Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server 7.0 ou posterior
Este artigo pressupõe que está familiarizado com os seguintes tópicos:
  • Visual Studio .NET
  • Noções básicas do ADO.NET e sintaxe

Criar projecto e adicionar código

Este código de exemplo utiliza a tabela de base de dados de exemplo Pubs autores.
  1. Cole as seguintes instruções SQL Query Analyzer ferramenta ou o utilitário ISQL:
    CREATE PROC MyProc
    AS
        SELECT * FROM Authors
        SELECT * FROM Authors WHERE State = 'CA'
    GO 
    					
  2. Abra o Visual Studio. NET.
  3. Criar uma aplicação do Windows do Visual Basic novo projecto.
  4. Certifique-se que o projecto contém uma referência ao espaço de nomes System.data e adicione uma referência a este espaço de nomes se não tiver.
  5. Colocar um botão de comando no Form1. Alterar a propriedade Name do botão para btnTest e alterar a propriedade de texto para teste .
  6. Utilize a instrução de importação espaços de nomes System.data.SqlClient , System.data.OLEDB e sistema para que não é necessário para qualificar declarações os espaços de nomes mais tarde no código. Adicione o seguinte código à secção General Declarations do Form1:
    Imports System
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    					
  7. Adicione o seguinte código depois da região "Criador de formulários Windows gerado código" na janela código.

    Nota <username>Tem de alterar ID de utilizador <utilizador> e palavra-passe = < palavra-passe segura > para os valores correctos antes de executar este código. Certifique-se que o ID de utilizador tem as permissões adequadas para efectuar esta operação na base de dados.
        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. Modificar a cadeia de ligação ( myConnString ) conforme apropriado para o ambiente.
  9. Guarde o projecto. No menu Debug , clique em Iniciar para executar o projecto.
  10. Clique em Testar . Repare que as caixas de mensagens de apresentam os dados que devolve o procedimento armazenado.

REFERÊNCIAS

Para obter informações adicionais sobre chamar procedimentos armazenados, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
306574  (http://support.microsoft.com/kb/306574/EN-US/ ) Como: chamada do SQL Server procedimentos armazenados no ASP.NET
Para obter informações adicionais sobre o tratamento de erros, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
308043  (http://support.microsoft.com/kb/308043/EN-US/ ) Como obter erros de fornecedor subjacente utilizando o ADO.NET no Visual Basic .NET
Para obter informações adicionais sobre parâmetros e procedimentos armazenados, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
308051  (http://support.microsoft.com/kb/308051/EN-US/ ) PROBLEMA: Parâmetros de saída não são apresentados quando executa um comando ADO.NET no Visual Basic .NET
Para obter mais informações sobre objectos ADO.NET e sintaxe, consulte o seguinte Microsoft .NET Framework Software Development Kit (SDK) documentação:
Acessando dados com o ADO.NET
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx)

A informação contida neste artigo aplica-se 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
Palavras-chave: 
kbmt kbhowtomaster kbsqlclient kbsystemdata KB309490 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 309490  (http://support.microsoft.com/kb/309490/en-us/ )