我想连接到 SQL 服务器并使用下图中的 SQL 语句从多个表中选择数据。SQL 连接信息存储在表中。最后,我想显示来自datagridview
.
问问题
2497 次
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 回答