绑定GridView到sql连接字符串数组
本文关键字:字符串 数组 连接 sql GridView 绑定 | 更新日期: 2023-09-27 18:16:31
我需要为多个SQL服务器运行相同的SQL查询并获得结果到一个网格视图
我得到的结果是只有一个数据库连接服务器,如何为两个服务器重复网格视图?谢谢大家,
web配置:
<connectionStrings>
<add name="db1" connectionString="my connection string for server 1" />
<add name="db2" connectionString="my connection string for server 2" />
</connectionStrings>
asp.net:
<div>
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
</div>
c#: string[] arr = new string[2] { "db1", "db2" };
arr[0] = ConfigurationManager.ConnectionStrings["db1"].ConnectionString;
arr[1] = ConfigurationManager.ConnectionStrings["db2"].ConnectionString;
for (int i = 0; i < arr.Length; i++)
{
SqlConnection con = new SqlConnection(arr[i]);
SqlCommand cmd = new SqlCommand("SELECT * from some sys.dm", con);
con.Open();
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataBind();
con.Close();
}
您的逻辑现在将用第二个数据源覆盖第一个数据源。相反,你会想要合并这两个数据源,并将它们绑定为一个到GridView。
试试这样写:
DataTable dtFinal = new DataTable();
foreach (string conString in arr)
{
DataTable dtTemp = new DataTable();
using (SqlConnection con = new SqlConnection(conString))
{
using (SqlCommand cmd = new SqlCommand("SELECT * from some sys.dm", con))
{
con.Open();
dtTemp.Load(cmd.ExecuteReader());
dtFinal.Merge(dtTemp);
}
}
}
GridView1.DataSource = dtFinal;
GridView1.DataBind();