Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > SqlDataReader


Автор: redig 18.10.2007, 08:27
Почему так не работает?
Ошибка InvalidOperationException на выделенном месте

"There is already an open DataReader associated with this Command which must be closed first."

Код

SqlCommand scom;
SqlCommand scom2;
private void button1_Click(object sender, EventArgs e)
        {
            string DocText = "";
            scom = new SqlCommand("select ID_QUES,NUM_QUES,QUESTION  from QUESTIONS order by NUM_QUES desc ",   DbMgrClass.SqlConnect);
           
           SqlDataReader sdr = scom.ExecuteReader();
            while (sdr.Read())
            {
                string DocText2 = "";
                
                 scom2 = new SqlCommand("select NAME_DOCS,PATH_DOCS  from DOCUMENTS where ID_DOCS=" + sdr.GetInt32(0).ToString() + " order by NUM_QUES desc ", DbMgrClass.SqlConnect);
                 SqlDataReader sdr6 = scom2.ExecuteReader();//Здесь вылетает исключение
                while (sdr6.Read())
                {
                    DocText2 = sdr6.GetInt32(0).ToString() + "</br>" + DocText2; ;
                }
                sdr6.Close();
                 
                DocText = sdr.GetValue(0).ToString() +"</br><center>"+DocText2+"</center><p>"+ DocText;
            }
            sdr.Close();
        }

Автор: moric83 18.10.2007, 09:03
Чтобы использовать много DataReader с одним подключением надо закрыть преведуший DataReader  - у тебя получяется 2 открытых DataReader одновременно.

Автор: CYBERDREAM 18.10.2007, 09:22
Тогда вообще нет резона использовать несколько, если предыдущий нужно закрыть. smile 

Автор: zaver 18.10.2007, 15:27
используй два SqlCommand с одной и той-же командой

Автор: redig 22.10.2007, 08:18
Цитата(moric83 @  18.10.2007,  09:03 Найти цитируемый пост)
Чтобы использовать много DataReader с одним подключением надо закрыть преведуший DataReader  - у тебя получяется 2 открытых DataReader одновременно. 


Вы правы. Что бы использовать несколько DataReader, для каждого нужно отдельное подключение.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)