【问题标题】:C# multiple SQL server selection [closed]C#多个SQL服务器选择[关闭]
【发布时间】:2013-05-19 15:55:42
【问题描述】:

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

【问题讨论】:

标签: c# sql sql-server select datagridview


【解决方案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.

【讨论】:

  • 有368台要连接sql server:(手动不能:(
  • 您必须将这 368 个单位存储在某个列表或其他内容中。循环遍历那个表,可以使用游标遍历那个表,并进行动态查询来实现
  • 368 台不同的服务器!不能用循环吗?但这将是非常糟糕的设计,并且可能是非常糟糕的性能。将打开 368 个不同的连接,运行查询并关闭,传递下一个...
  • Furkan Bey 300 den fazla sql sunucusuna bağlanıp yapmam gerekiyor bu işlemi :(
  • 首先我们要写英文。您可以创建一个循环;对于每次迭代,您将更改连接字符串、执行查询并将结果加载到数据表。我改变了我的答案,请检查。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多