2009-12-27 3 views
12

Je souhaite convertir mon jeu de résultats en liste dans ma page JSP. et veulent afficher toutes les valeurs. Ceci est ma requête:Resultset To List

SELECT userId, userName 
    FROM user; 

J'ai exécuté qu'utiliser PreparedStatement et a obtenu le Resultset. Mais comment le convertir en Liste et que vous voulez afficher le résultat comme celui-ci:

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

Existe-t-il une instance de ResultSet disponible dans la JSP (créée par exemple dans les balises de scriptlet) ou est-ce créé dans une servlet et transmis dans la JSP? – Rob

Répondre

27

Vous devez itérer sur la ResultSet objet dans une boucle, ligne par ligne, pour tirer chaque valeur de la colonne :

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

seule chose qui pourrait être corrigé est de changer l'instruction en instruction préparée (comme l'OP) – Bozho

+2

Vrai, mais cela n'a pas vraiment d'importance car la question ne concerne que l'extraction des données de l'objet ResultSet. –

+0

Merci pour votre réponse et vos discussions à ce sujet. Je l'ai. J'ai ajouté ces résultats dans la liste et je l'ai dit. –

5

Vous pouvez toujours utiliser Commons DbUtils et MapListHandler. A partir de la doc:

mise en œuvre ResultSetHandler que convertit un ResultSet dans une liste de Carte

donc ça va prendre beaucoup de code passe-partout hors de vos mains.

5

Un ResultSet ne devrait jamais aller aussi loin qu'un JSP. Il doit être mappé dans une structure de données ou un objet et fermé dans la portée de la méthode dans laquelle il a été créé. C'est un curseur de base de données, une ressource rare. Votre application sera bientôt épuisée si vous persistez avec un tel design.