2010-02-18 18 views

risposta

11

se i due ResultSet s provengono dallo stesso database, quindi perché non combinarli durante il recupero utilizzando union; per esempio.

select A, B 
from C 
union 
select A, B 
from D 

Tuttavia, se questo non è un'opzione, allora vi suggerisco di definizione di una classe per rappresentare una riga estratta dal vostro ResultSet e l'attuazione di equals/hashCode per consentire al da confrontare per l'uguaglianza. Quindi aggiungi semplicemente ogni a Set (ad esempio HashSet) per rimuovere i duplicati.

+1

+1 ... ottima risposta ... molto precisa e al punto ... Ti avrei revocata 10 volte se avessi i diritti. –

+2

UNION rimuove i duplicati, forzando un ordinamento. UNION ALL concentra in modo funzionale i set di risultati. Se i duplicati sono accettabili o se i due set di risultati non si sovrappongono, utilizzare UNION ALL. –

+0

@Adam: l'OP ha già dichiarato che voleva che le righe duplicate venissero visualizzate solo una volta, quindi perché ho menzionato UNION anziché UNION ALL. – Adamski

3

È possibile:

  1. Creare una classe che ha proprietà corrispondenti alle colonne
  2. implementare i metodi equals() e hashCode() utilizzando i campi con il quale si definisce "duplicato" (lasciate che il vostro IDE aiuto con il generazione di questi)
  3. createa un Set (HashSet):

    Set combinedDataSet = new HashSet();

  4. Iterate ogni resultSet, e costruire oggetti:

    while (rs1.next) { 
        YourClass obj = new YourClass(); 
        obj.setSomeProperty(rs.getString(1)); 
        obj.setAnotherProperty(rs.getString(2)); 
        // etc.. 
        cominbedDataSet.add(obj); 
    } 
    

    Lo stesso vale per l'iterazione rs2

fare questo solo in caso non è possibile ottenere il risultato desiderato attraverso un Query SQL!

+0

+1 ... .......... :) –

+0

@Bozho Voglio comunicare con te. Non ho problemi di programmazione che posso postare qui. Hai risposto a varie mie domande e, quindi, so che sei la persona giusta per avere un consiglio da parte tua per la mia carriera. Ho controllato anche il tuo blog ma non ho trovato alcun modo per comunicare con te. Non voglio usare SO per comunicare con te in quanto sarebbe sbagliato. Ti sarei molto grato se mi concedessi del tempo prezioso e dimmi come posso chattare con te. Grazie. –

+1

@Yatendra Goel se hai domande particolari, chiedi a SO. Se hai domande meno specifiche, controlla il mio blog (linkato nel mio profilo qui) e inviami un commento. – Bozho