2015-07-09 3 views
2

Я хочу ExecuteQuery() при чтении данных из другого списка результатов ExecuteQuery.Как выполнить запрос при чтении данных из другого SQL-запроса в C#?

SqlCommand cmd1 = new SqlCommand("pgwp_teamtypeselect", con); 
cmd1.CommandType = CommandType.StoredProcedure; 

rdr = cmd1.ExecuteReader(); 

string ehtml = null; 
string tipi = null; 
int che = 0; 

while (rdr.Read()) 
{ 
    SqlCommand cmd2 = new SqlCommand("pgwp_goalselect", con); 
    cmd2.CommandType = CommandType.StoredProcedure; 

    rdr2 = cmd2.ExecuteReader(); 

    while (rdr2.Read()) 
    { 
     do something..... 
    } 
} 
+0

Вы получаете исключение или хотите лучше сделать это? –

+2

Кажется, ваш внутренний 'while (rdr.Read())' должен быть 'while (rdr2.Read())' –

+0

Я пытаюсь получить данные с запросом, находясь в цикле чтения данных из другого запроса –

ответ

1

Там нет ничего плохого в выполнении запроса с использованием в запросе, но я предлагаю сделать это делает использование использования, как в примере ниже, так что объект получить выбрасывайте когда выполнение закончить

using(var command = new SqlCommand("pgwp_teamtypeselect", connection)) 
{ 
    command.CommandType = CommandType.StoredProcedure; 
    using(var dataReader = command.ExecuteReader()) 
    { 
    while (dataReader.Read()) 
    { 
      using(var command1 = new SqlCommand("pgwp_goalselect", 
         connection)) 
      { 
      command1.CommandType = CommandType.StoredProcedure; 

      using(var dataReader2 =command1.ExecuteReader()) 
      { 
      } 
      } 
    } 
} 

}

Вы также должны добавить это в строке подключения MultipleActiveResultSets = True»

string connectionString = @"Data Source=GTL-263\SQLEXPRESS;Initial Catalog=master;Integrated Security=SSPI;MultipleActiveResultSets=True"; 

вы можете прочитать это: Multiple Active Result Sets (MARS - ADO.NET 2.0) Все, что вы делаете, является правильным.

+0

где я пишу это? - cmd1.CommandType = CommandType.StoredProcedure; –

+0

@IrakliShalamberidze - как раз перед тем, как exeucting .. Я просто хочу сказать, что все, что было написано вами, это просто обернуть вещь в использовании {}, вы также можете посетить ссылку и следовать коду, это также нормально –

+0

@IrakliShalamberidze - проверка сальниковать обновленный ответ и не забывайте отмечать его как accpeted, если он работает для вас –