2009-12-27 20 views
12

Voglio convertire il mio Resultset in List nella mia pagina JSP. e voglio mostrare tutti i valori. Questa è la mia domanda:Resultset To List

SELECT userId, userName 
    FROM user; 

ho eseguito che l'utilizzo di PreparedStatement ed ha ottenuto il Resultset. Ma come convertire come lista e si desidera visualizzare il risultato come questo:

userID userName 
------------------ 
1001 user-X 
1006 user-Y 
1007 user-Z 
+0

Esiste un'istanza di ResultSet disponibile in JSP (ad esempio creata all'interno di tag scriptlet) oppure è stata creata in un servlet e passata nel JSP? – Rob

risposta

27

È necessario iterare il ResultSet oggetto in un ciclo, riga per riga, per tirare fuori ogni valore di colonna :

List ll = new LinkedList(); 
ResultSet rs = stmt.executeQuery("SELECT userid, username FROM USER"); 

// Fetch each row from the result set 
while (rs.next()) { 
    int i = rs.getInt("userid"); 
    String str = rs.getString("username"); 

    //Assuming you have a user object 
    User user = new User(i, str); 

    ll.add(user); 
} 
+0

l'unica cosa che può essere riparata è quella di cambiare la dichiarazione in istruzione preparata (come l'OP) – Bozho

+2

Vero, ma non importa, perché la domanda riguarda solo il recupero dei dati dall'oggetto ResultSet. –

+0

Grazie per la risposta e le discussioni su questo. Capito. Ho aggiunto quei set di risultati nella lista e lo faccio scorrere. –

5

Si può sempre usare Commons DbUtils e il MapListHandler. Dal doc:

ResultSetHandler implementazione che converte un ResultSet in una lista di Maps

quindi ci vorrà un sacco di codice boilerplate fuori delle vostre mani.

5

Un ResultSet non dovrebbe mai arrivare fino a un JSP. Dovrebbe essere mappato in una struttura dati o un oggetto e chiuso all'interno dell'ambito del metodo in cui è stato creato. È un cursore del database, una risorsa scarsa. La tua app ne uscirà presto se persisti con un tale design.