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 に答える