Normalmente utilizzato DataSet
perché è molto flessibile. Recentemente mi è stata assegnata l'attività di ottimizzazione del codice. Per ridurre gli accessi al database, sto cambiando due query in un'unica procedura. una query restituisce il count
e l'altro restituisce il actual data
. Cioè, My stored procedure
restituisce due tabelle. Ora so come leggere entrambe le tabelle usando DataSets
, ma ho bisogno di leggere entrambe le tabelle usando DataReader
. Alla ricerca di quello ho trovato This.Tabella Multipli in DataReader
seguo l'articolo e scritto il mio codice come questo:
dr = cmd.ExecuteReader();
while (dr.Read())
{
}
if (dr.NextResult()) // this line throws exception
{
while (dr.Read())
{
Ma sto un'eccezione a dt.NextResult. Eccezione è:
Ho anche tentato di Google sopra l'errore, ma ancora non in grado di risolvere il problema. Qualsiasi aiuto sarà molto apprezzato. Ho bisogno di leggere più tabelle usando datareader
, è possibile?
Quello che non capisco è: "una query restituisce il conteggio e gli altri restituisce i dati effettivi cioè la mia stored procedure restituisce due tavoli" _ _ Perché è il conteggio (che è un valore scalare) a ** tabella **? –
Sì, è un valore scalare ma la procedura memorizzata viene scritta utilizzando query dinamiche. entrambe le query sono molto grandi e le query vengono scritte come varchar e quindi, alla fine, eseguite utilizzando Exec. Se chiamo Query query come query secondaria della query di dati effettiva, la dimensione della variabile di query è molto grande ed è Eseguita con errori. Quindi per evitare questo ho scritto due query diverse questa è la ragione per cui Count viene anche da una tabella (seconda tabella). Spero di averlo chiarito. –