Concatenare 2 SQLDataReader
-
venerdì 27 luglio 2012 14:14
Ciao a tutti,
è possibile concatenare due SQLDataReader?Ho una cosa del genere:
resultPrec = cmdPrec.ExecuteReader(CommandBehavior.CloseConnection);
resultSucc = cmdSucc.ExecuteReader(CommandBehavior.CloseConnection);
ed ognuno di essi mi restituisce un'unica riga (con la stessa struttura, ma dati diversi, ovviamente), e il metodo mi restituisce un SQLDataReader.E' possibile unire i due?
Mi sembra di no, ma vorrei sapere qualche parere.
Grazie
Luigi
Tutte le risposte
-
venerdì 27 luglio 2012 14:19Postatore
Perché hai bisogno di unire i due DataReader?
Molto più semplicemente, puoi usare un'unica query che, tramite una UNION, restiusce già le due righe che ti servono nello stesso recordset.
Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva- Modificato Marco MinervaMicrosoft Community Contributor, Editor venerdì 27 luglio 2012 14:20
- Proposto come risposta Irina TurcuMicrosoft Contingent Staff, Owner lunedì 30 luglio 2012 14:33
- Contrassegnato come risposta Irina TurcuMicrosoft Contingent Staff, Owner giovedì 2 agosto 2012 15:29
-
venerdì 27 luglio 2012 14:28
Mmhh sì infatti, è una strada impercorribile. Devo lavorare lato database.
Grazie, come al solito, Marco.
Luigi
-
lunedì 30 luglio 2012 14:32Proprietario
Ciao Luigi,
In alternativa a quanto suggerito da Marco, nel caso abbia senso mantenere i due DataReader separatamente, potresti caricare ciascuno in dei DataTable separati con il metodo Load, dopodichè fare il merge dei due applicando il metodo Merge. Qui ne trovi un esempio.
Saluti,
Irina Turcu - Microsoft
[Manifesto] Regole e Aspetti generali all'uso dei forum MSDN
Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e approfondire la loro conoscenza dei prodotti e tecnologie Microsoft.
-
lunedì 30 luglio 2012 14:35
Grazie Irina. Ormai ho seguito un'altra strada, ma quello che mi hai segnalato tu è sicuramente interessante e da tenere presente per esigenze future.
Luigi
-
martedì 31 luglio 2012 07:15
Un'altra soluzione che ti dà sicuramente più libertà, è quella di utilizzare l'SQL batching.
Fai un comando che abbia nel text 2 differenti statement, per i quali ti aspetti dei results.
cmd.CommandText = "select campo1, campo2, campo3 from tabella1; select campo5, campo6 from tabella 2" reader = ExecuteReader(CommandBehavior.CloseConnection) do while reader.read() ... loop if reader.nextResult() then ' ... seconda query... do while reader.read() ... loop end ifIn termini di performance siamo li, ma a mio avviso è un approccio più elegante, e soprattutto se hai più stored procedures ognuna con il suo compito è più facile batcharle senza riscrivere la query... per esempio.
Have fun.
Adriano
- Modificato Adriano Trevisan 75 martedì 31 luglio 2012 07:16
- Contrassegnato come risposta Irina TurcuMicrosoft Contingent Staff, Owner giovedì 2 agosto 2012 15:29




