gpt4 book ai didi

c# - 如何合并/组合两个 SqlDataReader 对象

转载 作者:太空狗 更新时间:2023-10-29 23:10:07 31 4
gpt4 key购买 nike

我正在从事 SQL Server 监控项目。在这里,我想从机器上安装的所有 SQL Server 实例中获取数据。为此,我编写了一个 CLR 存储过程,其中数据来自两个不同的 SqlDataReader 对象,我想合并这两个 datareder 对象。

是否可以合并两个 SQLdatareader 对象?

以下是我遇到这个问题的情况:

SqlConnection conn = new SqlConnection("ConnectionSting of 1st SQLServerInstance")
string query = "select dbid,uid,cpu from [master].[sys].sysprocesses";

SqlCommand SelectCmmand = new SqlCommand(query, conn);
SqlDataReader rd1;
conn.Open();
rd1 = SelectCmmand.ExecuteReader();
conn.Close();

conn = new SqlConnection("ConnectionSting of 2nd SQLServerInstance")

SqlCommand SelectCmmand = new SqlCommand(query, conn);
SqlDataReader rd2;
conn.Open();
rd2 = SelectCmmand.ExecuteReader();
conn.Close();

SqlPipe sp;
sp = SqlContext.Pipe;
sp.Send(?????);

现在,sp.Send(??) 方法需要 SQLDataReader 对象作为参数,我想在其中发送从两个不同的连接字符串中获取的上述数据。

那么,我应该如何合并/合并 rd1 和 rd2?

最佳答案

您可以使用读取器加载两个 DataTable,合并它们并调用 DataTable.CreateDataReader()

例如(未测试):

DataTable dt1 = New DataTable();
dt1.Load(rd1);
DataTable dt2 = New DataTable();
dt2.Load(rd2);
dt1.Merge(dt2);
DataTableReader mainReader = dt1.CreateDataReader();
Common.DbDataReader reader = (Common.DbDataReader)mainReader;
sp.Send((SqlClient.SqlDataReader)reader);

编辑:恐怕我的代码不起作用,因为您不能将 DbDataReader 转换为 SqlDataReader

一种方法是(同样,未经测试)使用 SqlPipe.SendResultsRow逐行发送所有记录。

关于c# - 如何合并/组合两个 SqlDataReader 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8338641/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com