2

目的: C# と SqlServer2005 を使用して、複数の select ステートメントを使用して構造体を作成する

問題:現在、1 つの select ステートメントを使用して構造にデータを入力できますが、この特定の select ステートメントの性質上、正しい結果を生成するには、クエリを分解する必要があるため、複数の選択を使用して 1 つの構造にデータを入力する必要があります。これは可能ですか、それとも間違った方法で行っていますか。以下は私が使用しているコードです

public static bool GetColumns()
{
    String sql = "";

    try
    {
       conn.Open();

       sql = @"SELECT
                   database.dbo.table1.column1
               FROM
                   database.dbo.table1;

              SELECT
                   database.dbo.table2.column2
              FROM
                   database.dbo.table2;

              SELECT
                   database.dbo.table3.column3
              FROM    
                  database.dbo.table3 ;" ;

        SqlCommand cmd = new SqlCommand(sql, conn);

        SqlDataReader dr = cmd.ExecuteReader();

         MyStructure struct1 = new MyStructure();   

         while (dr.Read())
        {
           struct1.column1 = dr.GetValue(0);
           struct1.column2 = dr.GetValue(1);
           struct1.column3 = dr.GetValue(2);

          MyArrayList.Add(struct1);
        }

           dr.Close();

           conn.Close();

        return true;
 }

 catch (Exception ex)
 {
    if (conn.State == ConnectionState.Open)
        conn.Close();

    error.LogError(ex, "", "")
    return false
 }

上記のコードは、リストされている値が個々の select ステートメントの範囲外であるため、機能しません。正しい方法は何ですか?

4

1 に答える 1

3

ステートメントは複数の結果セットを返します。DataReader を使用している場合は、複数の結果が得られます。メソッドを使用DataReader.NextResultして次の結果セットを取得し、それに応じてデータを表示します。

気にしない場合は、a を使用して、DataSet 内に複数の結果を入力するDataReaderことができます。DataSetDataAdapaterDataTables

于 2013-09-23T20:21:21.343 に答える