Al momento sei offline in attesa che la connessione Internet venga ristabilita

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

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I311274
Per la versione di questo articolo relativa a Microsoft Visual Basic .NET, vedere 309490.

In questo articolo si fa riferimento ai seguenti spazi dei nomi della libreria di classi di Microsoft .NET Framework:
  • System.Data.OleDb
  • System.Data.SqlClient

CONTENUTO DELL'ATTIVITÀ

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.

Torna all'inizio

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.

Torna all'inizio

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
Torna all'inizio

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 MyProcAS    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.
Torna all'inizio
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): Torna all'inizio
NextResult
Proprietà

ID articolo: 311274 - Ultima revisione: 05/13/2007 05:02:40 - Revisione: 3.3

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

  • kbhowtomaster kbsqlclient kbsystemdata KB311274
Feedback