Maison > base de données > tutoriel mysql > Comment remplir efficacement un DataSet avec plusieurs tables à l'aide d'un DataReader ?

Comment remplir efficacement un DataSet avec plusieurs tables à l'aide d'un DataReader ?

Mary-Kate Olsen
Libérer: 2024-12-29 18:37:17
original
949 Les gens l'ont consulté

How to Efficiently Fill a DataSet with Multiple Tables Using a DataReader?

Remplir un DataSet avec plusieurs tables à l'aide d'un DataReader

Lorsque vous travaillez avec un DataSet contenant plusieurs tables avec des relations un-à-plusieurs, il est possible de le remplir à l'aide d'un DataReader. Cependant, l'approche par défaut consistant à utiliser un seul DataReader peut ne pas capturer les données de toutes les tables.

Pour surmonter cette limitation, vous pouvez utiliser l'approche suivante :

using System.Data;
using System.Data.SqlClient;
using System.IO;

namespace SampleApp
{
    public class DataSetWithTables
    {
        private SqlConnection connection;

        public DataSet SelectOne(int id)
        {
            DataSet result = new DataSet();
            string query = @"select * from table1; select * from table2 where table1_id = @ID;";
            using (connection = new SqlConnection("ConnectionString"))
            {
                connection.Open();
                using (SqlCommand command = new SqlCommand(query, connection))
                {
                    command.Parameters.AddWithValue("ID", id);
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        DataTable table1 = new DataTable("Table1");
                        DataTable table2 = new DataTable("Table2");
                        table1.Load(reader);
                        if (reader.NextResult())
                        {
                            table2.Load(reader);
                        }
                        result.Tables.Add(table1);
                        result.Tables.Add(table2);
                    }
                }
                connection.Close();
            }
            return result;
        }
    }
}
Copier après la connexion

Dans cette approche :

  1. Nous définissons une requête qui comprend deux instructions SELECT, une pour chaque table.
  2. Nous utilisons une SqlCommand avec des paramètres pour exécuter la requête.
  3. Nous exécutons la commande ExecuteReader et utilisons reader.NextResult() pour charger les données dans la deuxième table.
  4. Nous créons deux objets DataTable pour représenter nos tables et y chargeons les données .
  5. Nous ajoutons les objets DataTable au DataSet et fermons la connexion.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal