Con risposta 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:19
    Postatore
     
     Con risposta

    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

  • 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:32
    Proprietario
     
     

    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.

    LinkedIn

  • 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
     
     Con risposta Contiene codice

    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 if 

    In 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