sql >> Database >  >> RDS >> Sqlserver

Hoe retourneer ik meerdere resultatensets met SqlCommand?

Zie SqlDataReader.NextResult (een SqlDataReader wordt geretourneerd door SqlCommand.ExecuteReader aan te roepen):

Zet de gegevenslezer vooruit naar het volgende resultaat [set], bij het lezen van de resultaten van batch-Transact-SQL-instructies.

Voorbeeld:

string commandText = @"SELECT Id, ContactId
FROM dbo.Subscriptions;

SELECT Id, [Name]
FROM dbo.Contacts;";


List<Subscription> subscriptions = new List<Subscription>();
List<Contact> contacts = new List<Contact>();

using (SqlConnection dbConnection = new SqlConnection(@"Data Source=server;Database=database;Integrated Security=true;"))
{
    dbConnection.Open();
    using (SqlCommand dbCommand = dbConnection.CreateCommand())
    {
        dbCommand.CommandText = commandText;
        using(SqlDataReader reader = dbCommand.ExecuteReader())
        {
            while(reader.Read())
            {
                subscriptions.Add(new Subscription()
                {
                    Id = (int)reader["Id"],
                    ContactId = (int)reader["ContactId"]
                });
            }

            // this advances to the next resultset 
            reader.NextResult();

            while(reader.Read())
            {
                contacts.Add(new Contact()
                {
                    Id = (int)reader["Id"],
                    Name = (string)reader["Name"]
                });
            }
        }
    }
}

Andere voorbeelden:

  • C# meerdere resultaatsets
  • Een query uitvoeren die meerdere resultatensets retourneert met SqlDataReader:SqlCommand Select « ADO.Net « C# / CSharp-zelfstudie


  1. Hoe Odoo 12 te clusteren met PostgreSQL-streamingreplicatie voor hoge beschikbaarheid

  2. Kan offset-naïeve en offset-bewuste datetimes niet aftrekken

  3. Wat is de juiste index voor het opvragen van structuren in arrays in Postgres jsonb?

  4. Hoe gebruik ik de opbouwfunctie voor expressies in Access 2016?