Jeśli twoja instrukcja/proc zwraca wiele zestawów wyników, Na przykład, jeśli masz dwie instrukcje select
w pojedynczym obiekcie, otrzymasz dwa zestawy wyników.
- służy do przemieszczania się między zestawami wyników.
Read
służy do przechodzenia do przodu w zapisach pojedynczego zestawu wyników.
Rozważmy następujący przykład:
Jeśli masz proc którego głównym ciało jest jak:
.... Proc start
SELECT Name,Address FROM Table1
SELECT ID,Department FROM Table2
-- Proc End
wykonanie powyższej proc przyniosłoby dwa zestawy wyników. Jedna dla Table1
lub pierwsza instrukcja select i inna dla następnej instrukcji select
. Domyślnie pierwszy zestaw wyników byłby dostępny dla Read
. Jeśli chcesz przejść do drugiego zestawu wyników, będziesz potrzebować NextResult
.
zobacz: Retrieving Data Using a DataReader
Przykład Kod z tego samego link: Odzyskiwanie wiele zestawów wyników wykorzystujące NextResult
static void RetrieveMultipleResults(SqlConnection connection)
{
using (connection)
{
SqlCommand command = new SqlCommand(
"SELECT CategoryID, CategoryName FROM dbo.Categories;" +
"SELECT EmployeeID, LastName FROM dbo.Employees",
connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.HasRows)
{
Console.WriteLine("\t{0}\t{1}", reader.GetName(0),
reader.GetName(1));
while (reader.Read())
{
Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0),
reader.GetString(1));
}
reader.NextResult();
}
}
}
Nie rozumiem, co masz na myśli, używając 2 instrukcji "select" w jednym zapytaniu. Jeśli masz 2 'select' wypowiedzi, oznacza to, że masz 2 pytania ... EDIT: Ok, myślę, że rozumiem teraz. NextResult przenosi się do następnego "zapytania" w twoim przykładzie. Zdarza się to tylko podczas korzystania z procedur? – Ozkan
@Ozkan, Możesz wykonać wiele instrukcji SELECT w jednym poleceniu, jak 'SELECT * FROM Table1; SELECT * FROM TABLE2;', oddzielone ';' w przypadku SQL, lub możesz mieć procedurę składowaną z wieloma instrukcjami select. – Habib
@Ozkan, do edycji w komentarzu, nie można łączyć dwóch zapytań w komendzie. Dodałem też link z MSDN i przykład z tamtego miejsca. – Habib