绑定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到sql连接字符串数组

您的逻辑现在将用第二个数据源覆盖第一个数据源。相反,你会想要合并这两个数据源,并将它们绑定为一个到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();