Se la vostra dichiarazione/proc sta tornando più set di risultati, ad esempio, se si hanno due select
dichiarazioni in un'unica Command
oggetto, allora si otterrà indietro di due set di risultati.
NextResult
viene utilizzato per spostarsi tra i set di risultati.
Read
si utilizza per andare avanti nei record di un singolo set di risultati.
consideri il seguente esempio:
Se si dispone di un proc il cui corpo principale è come:
.... Proc start
SELECT Name,Address FROM Table1
SELECT ID,Department FROM Table2
-- Proc End
L'esecuzione del proc sopra produrrebbe due set di risultati. Uno per Table1
o prima istruzione di selezione e altro per la successiva dichiarazione select
.
Per impostazione predefinita, il primo set di risultati sarebbe disponibile per Read
. Se vuoi passare al secondo set di risultati, avrai bisogno di NextResult
.
Vedi: Retrieving Data Using a DataReader
Esempio Codice dallo stesso link: Recupero di più set di risultati utilizzando 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();
}
}
}
Non capisco cosa intendi con 2 istruzioni 'select' in una query. Se hai 2 istruzioni 'select', questo significa che hai 2 query ... EDIT: Ok, penso di aver capito ora. NextResult passa alla successiva 'query' nel tuo esempio. Questo succede solo quando usi le procedure? – Ozkan
@Ozkan, È possibile eseguire più istruzioni select in un singolo comando come "SELECT * FROM Table1; SELECT * FROM TABLE2;', separato da ';' in caso di SQL, oppure è possibile avere stored procedure con più istruzioni select. – Habib
@Ozkan, per la modifica nel commento, non è possibile concatenare due query anche in un comando. Ho aggiunto un collegamento da MSDN e un esempio anche da lì. – Habib