0

2 つのテーブルのデータを処理するために使用する次のコードがありますが、2 つの SqlDataReaders を使用して動作させることができないようです。それを機能させるために変更する方法はありますか?

//SqlConnection cn = valid SQL Server 2008 connection

using (SqlCommand cmd = new SqlCommand("SELECT * FROM table1", cn))
{
    using (SqlDataReader rdr = cmd.ExecuteReader())
    {
        while (rdr.Read())
        {
            int nVal1 = rdr.GetInt32(0);
            int nVal2 = rdr.GetInt32(1);
            //...
            int nValN = rdr.GetInt32(N);

            //Now I process the data read ...

            //After processing I need to use the results
            //to look up data from another table using 
            //this item's data

            using (SqlCommand cmd2 = new SqlCommand("SELECT * FROM table2 WHERE " + strSQLCondition, cn))
            {
                //But code below doesn't let me create another reader
                using (SqlDataReader rdr2 = cmd2.ExecuteReader())
                {
                    while (rdr2.Read())
                    {
                        //Process results
                    }
                }
            }

        }
    }
}
4

1 に答える 1

3

デフォルトでは、1 つの接続で使用できるアクティブなデータセットは 1 つだけです。いくつかのオプションがあります。思いつくのは3つ

  1. 事前にデータを検索してキャッシュする
  2. 内部コマンドに 2 番目の接続オブジェクトを使用する
  3. MARS を使用する - http://msdn.microsoft.com/en-us/library/ms131686.aspx
于 2013-04-25T00:12:50.727 に答える