2011-10-04 14 views
28

In Java, ho una query come questa:Java, scorrendo set di risultati

String querystring1= "SELECT rlink_id, COUNT(*)" 
        + "FROM dbo.Locate " 
        + "GROUP BY rlink_id "; 

La rlink_id tabella ha questi dati:

Sid  lid 
3   2 
4   4 
7   3 
9   1 

Come faccio a estrarre questi valori con un ResultSet Java ?

Ecco quello che ho finora:

String show[] = {rs4.getString(1)}; 
String actuate[] = {rs4.getString(2)}; 
asString = Arrays.toString(actuate); 

risposta

13

Result Set sono effettivamente contiene più righe di dati, e utilizzare un cursore per indicare la posizione corrente. Quindi nel tuo caso, rs4.getString(1) ottieni solo i dati nella prima colonna della prima riga. Al fine di passare alla riga successiva, è necessario chiamare next()

un esempio veloce

while (rs.next()) { 
    String sid = rs.getString(1); 
    String lid = rs.getString(2); 
    // Do whatever you want to do with these 2 values 
} 

ci sono molti metodo utile in ResultSet, si dovrebbe dare uno sguardo :)

+1

quando chiamo questo sid n coperchio da qualche parte attraverso il loop mi da solo la prima riga di valori – user977830

+0

Non rs.next() nel ciclo while salta il primo risultato? – Durin

+2

@Durin: controllare javadoc di [ResultSet.next()] (http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#next%28%29), il " cursore "è in realtà il punto ** prima ** della prima riga quando viene creato :) –

30
List<String> sids = new ArrayList<String>(); 
List<String> lids = new ArrayList<String>(); 

String query = "SELECT rlink_id, COUNT(*)" 
      + "FROM dbo.Locate " 
      + "GROUP BY rlink_id "; 

Statement stmt = yourconnection.createStatement(); 
try { 
    ResultSet rs4 = stmt.executeQuery(query); 

    while (rs4.next()) { 
     sids.add(rs4.getString(1)); 
     lids.add(rs4.getString(2)); 
    } 
} finally { 
    stmt.close(); 
} 

String show[] = sids.toArray(sids.size()); 
String actuate[] = lids.toArray(lids.size()); 
+0

non dovrebbe essere un "fare"? L'iteratore non è già nella posizione corretta per accedere alla prima riga all'inizio? (altrimenti perché i tutorial che accedono alla prima riga funzionano solo diversamente)? – GameDeveloper

+0

Decisamente no (la query non può restituire alcuna riga). Di quale tutorial stai parlando? –

+0

ok grazie che ha risolto il mio problema .. U.U c'era un tutorial sbagliato al primo posto in una ricerca su google, sembra andato ora. – GameDeveloper

-3

Il problema con il tuo codice è:

 String show[]= {rs4.getString(1)}; 
    String actuate[]={rs4.getString(2)}; 

Questo creerà un nuovo array ogni cronometrate il vostro ciclo (non append come si potrebbe presumere) e quindi alla fine avrete un solo elemento per array.

Qui è un altro modo per risolvere questo:

StringBuilder sids = new StringBuilder(); 
    StringBuilder lids = new StringBuilder(); 

    while (rs4.next()) { 
     sids.append(rs4.getString(1)).append(" "); 
     lids.append(rs4.getString(2)).append(" "); 
    } 

    String show[] = sids.toString().split(" "); 
    String actuate[] = lids.toString().split(" "); 

Questi array avrà tutte le elemento richiesto.

+1

Questo è uno dei modi più strani per mettere in rete gli array che abbia mai visto. Inoltre, cosa succede se una delle stringhe che ottieni contiene uno spazio? –

+0

Qualche motivo per downvote? – Santosh

+0

OP sta memorizzando un int e non una stringa. Quindi non ci sarà spazio di sicuro. È solo un altro modo per creare un array diverso dai modi suggeriti da altre persone. – Santosh

Problemi correlati