Come gestire risultati multipli utilizzando il DataReader in Visual C# .NET

Per la versione di Microsoft Visual Basic .NET di questo articolo, vedere
309490 .

In questo articolo fa riferimento a spazi dei nomi Microsoft.NET Framework Class Library seguenti:
  • System.Data.OleDb
  • System.Data.SqlClient

IN QUESTA ATTIVITÀ

Riepilogo

In questo articolo contiene una funzione generica che è possibile utilizzare per elaborare più recordset e altri messaggi restituiti da stored procedure o l'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 (ad esempio INSERT, UPDATE, DELETE o SELECT INTO)
  • Messaggio informativo o avviso
  • Messaggio di errore
  • Stored procedure restituiscono valori e parametri di output
Quando si leggono i risultati di un'istruzione SQL batch, è possibile utilizzare il metodo NextResult per posizionare il DataReader il risultato successivo del ResultSet.

Requisiti

Nell'elenco seguente sono indicati l'hardware consigliato, 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 presuppone che si abbia familiarità con i seguenti argomenti:
  • Visual Studio .NET
  • Nozioni fondamentali ADO.NET e sintassi

Progetto di creare e aggiungere codice

Questo esempio di codice viene utilizzata la tabella Authors del database di esempio Pubs di SQL Server.
  1. Incollare le seguenti istruzioni lo strumento SQL Query Analyzer o l'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 applicazione Windows in Visual C# .NET. Per impostazione predefinita verrà aggiunto al progetto Form1.
  4. Assicurarsi che il progetto contenga un riferimento allo spazio dei nomi System. Data e aggiungere un riferimento a questo spazio dei nomi in caso contrario.
  5. Posizionare un pulsante di comando sul Form1. Modificare la proprietà Name del pulsante in btnTeste modificare la proprietà Text a Test.
  6. Utilizzare l'istruzione using dei nomi System, System.Data.SqlClient e System.Data.OleDbin modo che non sia necessario qualificare dichiarazioni in tali spazi dei nomi nel codice. Aggiungere il seguente codice alla sezione General Declarations di Form1:
    using System;using System.Data.OleDb;
    using System.Data.SqlClient;

  7. Aggiungere il codice seguente all'evento btnTest_Click :

    Nota: È necessario modificare il valore di ID utente < nome utente > account a un account che disponga delle autorizzazioni appropriate per eseguire queste operazioni sul 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 la stringa di connessione (myConnString) in base alle esigenze dell'ambiente.
  9. Salvare il progetto. Dal menu Debug , fare clic su Start per eseguire il progetto.
  10. Fare clic su Test. Si noti che le caselle di messaggi visualizzano i dati che la stored procedure restituisce.

Riferimenti

Per ulteriori informazioni sulla chiamata di stored procedure, fare clic sul numero dell'articolo per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
306574 di SQL Server chiamare Stored procedure in ASP.NET
Per ulteriori informazioni sulla gestione degli errori, fare clic sul numero dell'articolo per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
Come ottenere gli errori di Provider sottostanti utilizzando ADO.NET in Visual C# .NET 308650
Per ulteriori informazioni sui parametri e stored procedure, fare clic sul numero dell'articolo per visualizzare l'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 sulla sintassi e gli oggetti ADO.NET, vedere la seguente documentazione Microsoft.NET Framework Software Development Kit (SDK):
Proprietà

ID articolo: 311274 - Ultima revisione: 30 gen 2017 - Revisione: 2

Feedback