2015-09-01 2 views
-1

В моем коде есть цикл, который дает результаты SQL-запроса с использованием SqlCommand. Однако для некоторых запросов, которые мне нужно запустить, в запросе есть несколько операторов select. Например, это может быть то, что будет выглядеть весь оператор как:Множественные выборки в запросе не дают все наборы результатов

Dim query as string = " 
    Select * from people 
    Select * from places 
    Select * from items 
    Select * from foods" 

cmd = New SqlCommand(query, connect) 
cmd.Connection.Open() 
reader = cmd.ExecuteReader 

While reader.HasRows() 
//various logic 
While reader.Read() 
//Do Logic Here 
End While 
End While 

Когда мой запрос побежал я получаю результаты за первые 2, но так как третий один не имеет никаких результатов она начинает приложение из цикла и я не получаю результаты 4-го выбора. Мне также нужны результаты 4-го выбора.

Редактировать: Союз не будет работать для этого случая, потому что мне нужно иметь возможность различать результирующие множества в моей логике.

+1

Вы пробовали 'UNION ALL' между запросами? –

+0

Союз не работает, мне нужно уметь отличать результирующие множества. –

+1

использовать 'reader.NextResult' во внешнем цикле – mafafu

ответ

1
static void Main(string[] args) 
    { 
     cmd = new SqlCommand("zp_multiple_results", connect); 
     cmd.Connection.Open(); 

     reader = cmd.ExecuteReader(); 

     do 
     { 
      if (reader.HasRows) 
       while (reader.Read()) 
       { 
        Console.WriteLine(reader[0].ToString()); 
       } 
     } 
     while (reader.NextResult()); 

     cmd.Connection.Close(); 
     cmd.Connection.Dispose(); 
     cmd.Dispose(); 

     Console.ReadLine(); 
    } 
+0

Кажется хорошим. Gracias amigo –

Смежные вопросы