2010-06-02 10 views
0

Je veux être en mesure de vérifier s'il y a un résultat dans mon resultset. Todo ce que j'exécuterait:Vérifiez si ResultSet est Null si pas alors obtenir int

if(rs.next()){ 
    boolean = true; 
} 

Cependant je veux vérifier si la valeur est dans la base de données le cas échéant le récupérer:

while(rs.next()) 
    id = rs.getInt("id); 

Comment puis-je aller à combiner les deux? Je veux -2 à retourner si le resultset est vide.
Merci à l'avance,
Dean

Répondre

5
id = rs.next() ? rs.getInt("id") : -2; 

comme ça?

+0

Pouvez-vous expliquer cela parce que je n'ai jamais vu quelque chose d'écrit comme ça? – Dean

+0

@Dean: c'est une expression ternaire avec l'opérateur ternaire '?:'. Il fait essentiellement la même chose que 'int id; if (rs.next()) id = rs.getInt ("id"); sinon id = -2; Voir aussi http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op2.html – BalusC

2

Il suffit d'utiliser un if-else:

if (resultSet.next()) { 
    return resultSet.getInt("id"); 
} else { 
    return -2; 
} 

Voir aussi this answer pour plus de conseils comment gérer l'existence, zéro/un, zéro/plus de résultats.

+0

Sauf que vous devriez vraiment fermer le jeu de résultats, ce qui nécessite à peu près de sauvegarder le résultat dans les deux cas, puis de fermer le jeu de résultats, puis retour. – Jay

+1

@Jay: Je ne sais pas comment vous fermez vos ressources, mais je les ferme habituellement dans 'finally' et ça marchera très bien. – BalusC

+0

D'accord, je vais acheter ça. Personnellement, je ferme habituellement mes connexions dans un bloc finally, mais je ferme les ResultSets et les Statements dans le code de la ligne principale parce que je suis trop paresseux pour les déclarer en dehors du bloc try, puis les remplir à l'intérieur. – Jay