我想连接到SQL服务器,并使用下图中的SQL语句从多个表中选择数据。 SQL连接信息存储在表中。最后,我想显示datagridview
。
答案 0 :(得分: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.
答案 1 :(得分:0)
您可以使用链接服务器。使用链接服务器,您可以按照格式
从一个查询访问不同的服务器数据库 select <server>.<database>.<schema>.<table>
此外,您可以使用OPENROWSet方法,您可以在其中指定服务器名称,用户名密码并在那里编写SQL查询。