Gestione di pi¨ risultati con DataReader in Visual C# .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 311274 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato precedentemente pubblicato con il codice di riferimento I311274
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrata una funzione generica che pu˛ essere utilizzata per elaborare pi¨ recordset e altri messaggi restituiti da stored procedure o dall'esecuzione di istruzioni SQL batch.

Descrizione della tecnica

ActiveX Data Objects (ADO) pu˛ ricevere cinque diversi tipi di dati dal server:
  • Recordset
  • Numero di record modificati da una query di comando, quale INSERT, UPDATE, DELETE o SELECT INTO
  • Messaggio informativo o avviso
  • Messaggio di errore
  • Valori restituiti e parametri di output di stored procedure
Quando si leggono i risultati di un'istruzione SQL batch, Ŕ possibile utilizzare il metodo NextResult per posizionare DataReader al successivo risultato del gruppo di risultati.

Requisiti

Nell'elenco riportato di seguito sono indicati l'hardware, il software, l'infrastruttura di rete e i service pack necessari:
  • 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 versione successiva
In questo articolo si presume la conoscenza dei seguenti argomenti:
  • Visual Studio .NET
  • Nozioni fondamentali e sintassi di ADO.NET

Creazione del progetto e aggiunta del codice

Nel codice di esempio riportato di seguito viene utilizzata la tabella Authors del database di esempio Pubs di SQL Server.
  1. Incollare le istruzioni seguenti nell'Analizzatore query di SQL Server oppure nell'utilitÓ ISQL:
    CREATE PROC MyProc
    AS
        SELECT * FROM Authors
        SELECT * FROM Authors WHERE State = 'CA'
    GO 
    					
  2. Avviare Visual Studio .NET.
  3. Creare un nuovo progetto di applicazione per Windows in Visual C# .NET. Per impostazione predefinita verrÓ aggiunto al progetto il Form1.
  4. Verificare che il progetto contenga un riferimento allo spazio dei nomi System.Data; qualora il riferimento non fosse presente, aggiungerlo.
  5. Posizionare un pulsante Command sul Form1. Modificare la proprietÓ Name del pulsante in btnTest, quindi modificare la proprietÓ Text in Test.
  6. Utilizzare l'istruzione using per gli spazi dei nomi System, System.Data.OleDb e System.Data.SqlClient in modo che non sia necessario qualificare le dichiarazioni nel codice successivamente. Aggiungere il codice riportato di seguito alla sezione General Declarations di Form1:
    using System;
    using System.Data.OleDb;
    using System.Data.SqlClient;
    					
  7. Aggiungere il seguente codice all'evento btnTest_Click:

    Nota ╚ necessario modificare il valore dell'account <nome utente> dell'ID utente in un account dotato delle autorizzazioni appropriate per l'esecuzioni di tali operazioni nel database.
        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. Modificare opportunamente la stringa di connessione (myConnString) in funzione dell'ambiente di lavoro.
  9. Salvare il progetto. Scegliere Avvia dal menu Debug per eseguire il progetto.
  10. Fare clic su Test. Si noti che nelle finestre di messaggio vengono visualizzati i dati restituiti dalla stored procedure.

Riferimenti

Per ulteriori informazioni sulla chiamata di stored procedure, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
306574 Chiamata alle stored procedure di SQL Server in ASP.NET utilizzando Visual Basic .NET
Per ulteriori informazioni sulla gestione degli errori, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
308650 Come ottenere gli errori di provider sottostanti utilizzando ADO.NET in Visual C# .NET
Per ulteriori informazioni su parametri e stored procedure, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
308621 PRB: Parametri di output non restituiti quando si esegue un comando ADO.NET in Visual C# .NET
Per ulteriori informazioni su oggetti e sintassi ADO.NET, fare riferimento alla seguente documentazione del Software Development Kit (SDK) di Microsoft .NET Framework (informazioni in lingua inglese):
Accessing Data with ADO.NET
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx

ProprietÓ

Identificativo articolo: 311274 - Ultima modifica: domenica 13 maggio 2007 - Revisione: 3.3
Le informazioni in questo articolo si applicano a
  • Microsoft ADO.NET (incluso in .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Chiavi:á
kbhowtomaster kbsqlclient kbsystemdata KB311274
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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