0

I have the following code that I use to process data from two tables, but I can't seem to make two SqlDataReaders to work with it. Any idea how to change it to make it work?

//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. 事先查找数据并缓存
  2. 为您的内部命令使用第二个连接对象
  3. 使用 MARS - http://msdn.microsoft.com/en-us/library/ms131686.aspx
于 2013-04-25T00:12:50.727 回答