J'ai un problème dans le pilote JDBC pour SQLite. P>
J'exécute une requête avec une instruction SELECT. P>
Si je reçois un "code> vides" / code> (0 rangées), je vois une exception "Resultats" fermée "lancée lorsque vous appelez Sans beaucoup d'expérience de JDBC antérieur, ma théorie (que je ne pouvais pas confirmer via javadocs pour J'ai vu ce Signaler de bogues mais je ne suis pas sûr Si c'est lié. p>
Mes QEustions sont: p>
Pour # 4, ma solution consistait à utiliser (Je pourrais aussi avoir simplement sélectionné un comte insetad car je n'ai pas vraiment besoin d'un ensemble de résultats, simplement zéro-non-zéro drapeau, mais je veux connaître la bonne chose à faire si je me soucie des résultats de Select) p>
merci! p> getstring (1) code>. P>.
ResulatsSet code>) est-ce p>
getString (1) code> ne fonctionne pas sur des résultats (par des lignes zéro) (par conception ou en raison d'un bogue) li>
ResultatsSet (code> 'S "Open" Drapeau est défini sur
False code> sur zéro rangée (à nouveau, par design ou un bug) li>
ul>
Resulatset code> dans tous les pilotes JDBC? LI>
Isfirst () code> appel à droite après
ExecuteQuery () code> Pour vérifier si des lignes sont présentes dans le jeu de résultats. Est-ce la meilleure approche de la pratique? P>
4 Réponses :
while (rs.next()) { // process the row }
Cette réponse n ° 4. Qu'en est-il de # 1-3? :)
des Javadocs pour RESUNTERT : p>
Un objet Resulatset maintient un curseur pointant vers sa ligne actuelle de données. Initialement le curseur est positionné avant la première rangée. La méthode suivante déplace le curseur sur la rangée suivante et parce qu'il retourne faux quand il ne sont plus des lignes dans les Resultset objet, il peut être utilisé dans une boucle de temps itérer à travers le jeu de résultats. P> blockQuote>
Vous devrez positionner le
ResulatsT Code> d'une ligne, par exemple. En appelant appelant
suivant () code>, avant de tenter de lire toutes les données. Si l'appel à
suivant () code> renvoie
false code> alors le jeu de résultats est vide. P>
Cette réponse n ° 4. Qu'en est-il de # 1-3? :)
@Dvk il n'a pas de sens d'appeler getstring code> jusqu'à ce que les résultats code> sont positionnés sur une rangée, il est donc logique qu'il soulève une exception (ceci s'applique pour tout JDBC conducteur). Je ne suis pas sûr de ce que vous parlez de la "drapeau" Open "du Restaurantset '.
Dans le débogueur de Eclipse, lors de l'examen de l'ensemble de résultats, le membre "Open" a une valeur "FALSE". C'est la raison de l'exception "ResultSet Closed" (pas la cause sous-jacente, mais la variable immédiate qui est examinée pour générer l'exception dans la source JDBC)
vide ou non, mais que ce qui suit est toujours Ce n'est pas un bug. C'est comportement documenté . Chaque Didacticiel JDBC décent le mentionne. Vous devez définir le curseur du ResultSet en utilisant Si vous êtes intéressé si la ligne supposée unique si vous n'attendez réellement que zéro fort> ou puis le gérer en conséquence dans l'objet Business / Domain, par exemple P> Suivant () code> avant d'accéder à toutes les données. P>
suivant () code>. Par exemple dans un
userDao code> Classe: p>
List<User> users = userDAO.list();
if (!users.isEmpty()) {
int count = users.size();
// ...
}
else {
// Help, no users?
}
Je choisis de "accepter" celui-ci en raison de la largeur des exemples de code et des liens DOC.
Pour un tel problème, vous pouvez utiliser comme ça
while(rs.next()) { String name=rs.getString("Name"); int roll_no=Integer.parseInt(rs.getString("Roll")); } finally { try { rs.close(); pst.close(); } catch(Exception ee) { } } Joptionpane.showmessahedialog(this,ee);
Soin de formater le post. J'ai formaté une de vos réponses, vérifiez et formatez d'autres réponses, le cas échéant!
merci de mayesh mayani je suis nouveau pour ce site.
Pas de soucis ... Continuez votre contribution!
Merci tout le monde! Très illuminant!