首頁 >資料庫 >mysql教程 >如何使用 DataReader 有效率地用多個表填入資料集?

如何使用 DataReader 有效率地用多個表填入資料集?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-29 18:37:17953瀏覽

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

使用DataReader 用多個表填充資料集

使用包含一對多關係的多個表的資料集時,可以使用DataReader 來填入它。但是,使用單一 DataReader 的預設方法可能無法擷取所有表中的資料。

要克服此限制,您可以使用以下方法:

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;
        }
    }
}

在此方法中:

  1. 我們定義一個查詢,其中包含兩個SELECT語句,每個表一個。
  2. 我們使用參數的 SqlCommand 來執行查詢。
  3. 我們執行 ExecuteReader 指令並使用 reader.NextResult() 將資料載入到第二個表中。
  4. 我們建立兩個 DataTable 物件來表示我們的表,將資料載入其中。
  5. 我們將 DataTable 物件新增至 DataSet 並關閉連線。

以上是如何使用 DataReader 有效率地用多個表填入資料集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn