0

我想连接到 SQL 服务器并使用下图中的 SQL 语句从多个表中选择数据。SQL 连接信息存储在表中。最后,我想显示来自datagridview.

在此处输入图像描述

4

2 回答 2

1

您不能在同一连接中的不同服务器上运行 sql 查询。您可以创建一个循环;对于每次迭代,您将更改连接字符串、执行查询并将结果加载到数据表。

List<string> lstSQLConStr = new List<string>();
lstSQLConStr.Add(@"Server=myServerAddress1;Database=myDataBase;User Id=myUsername;Password=myPassword;");
lstSQLConStr.Add(@"Server=myServerAddress2;Database=myDataBase;User Id=myUsername;Password=myPassword;");
lstSQLConStr.Add(@"Server=myServerAddress3;Database=myDataBase;User Id=myUsername;Password=myPassword;");
lstSQLConStr.Add(@"Server=myServerAddress4;Database=myDataBase;User Id=myUsername;Password=myPassword;");

string cmd = "SELECT * FROM BOOKS1 UNION SELECT * FROM BOOKS2 UNION SELECT * FROM BOOKS3";

SqlConnection sqlCon = null;
SqlCommand sqlCmd = null;

DataTable dtResult = new DataTable();

for (int i = 0; i < lstSQLConStr.Count; i++)
{
    using (sqlCon = new SqlConnection(lstSQLConStr[i]))
    {
        sqlCon.Open();

        using (sqlCmd = new SqlCommand(cmd, sqlCon))
        {
            sqlCmd.CommandType = CommandType.Text;

            using (SqlDataReader dataReader = sqlCmd.ExecuteReader())
            {
                dtResult.Load(dataReader);
            }
        }
    }
}

//here dtResult contains all results.
于 2013-05-24T06:01:00.377 回答
0

您可以使用链接服务器。使用链接服务器,您可以按照以下格式从一个查询访问不同的服务器数据库

     select <server>.<database>.<schema>.<table>

您也可以使用 OPENROWSet 方法,您可以在其中指定服务器名称、用户名密码并在那里编写您的 sql 查询。

于 2013-05-24T06:19:22.800 回答