Comment puis-je trouver que le ResultSet
, que j'ai obtenu en interrogeant une base de données, est vide ou non?Comment trouver si un ResultSet est vide ou non dans Java?
Répondre
Immédiatement après votre instruction execute, vous pouvez avoir une instruction if. Par exemple
ResultSet rs = statement.execute();
if (!rs.next()){
//ResultSet is empty
}
Calcule la taille du java.sql.ResultSet:
int size = 0;
if (rs != null) {
rs.beforeFirst();
rs.last();
size = rs.getRow();
}
(Source)
Pour autant que je sache, c'est une mauvaise idée ... tout d'abord, vous devez vous assurer que le résultat peut se déplacer vers l'arrière, deuxièmement, vous prendre un coup de performance en faisant cela. Il est beaucoup plus rapide d'utiliser un ensemble de résultats uniquement en avant, et d'utiliser une boucle while (comme cela a déjà été suggéré par d'autres ici) – user85116
D'accord ... J'ai voté la réponse acceptée, qui répond à la question beaucoup plus directement. – Dolph
Dolph - NICE !!!!! –
Pour cela, utilisez rs.next()
:
while (rs.next())
{
...
}
Si le jeu de résultats est vide, le code à l'intérieur de la boucle ne sera pas exécuté.
Si vous utilisez rs.next(), vous déplacez le curseur, que vous devriez d'abord de se déplacer() pourquoi ne vérifient pas l'utilisation première() directement?
public void fetchData(ResultSet res, JTable table) throws SQLException{
ResultSetMetaData metaData = res.getMetaData();
int fieldsCount = metaData.getColumnCount();
for (int i = 1; i <= fieldsCount; i++)
((DefaultTableModel) table.getModel()).addColumn(metaData.getColumnLabel(i));
if (!res.first())
JOptionPane.showMessageDialog(rootPane, "no data!");
else
do {
Vector<Object> v = new Vector<Object>();
for (int i = 1; i <= fieldsCount; i++)
v.addElement(res.getObject(i));
((DefaultTableModel) table.getModel()).addRow(v);
} while (res.next());
res.close();
}
Je suis d'accord. J'ai ajouté mon code ci-dessous (ne pouvait pas inclure de code avec le commentaire). –
Certainement cela donne une bonne solution,
ResultSet rs = stmt.execute("SQL QUERY");
// With the above statement you will not have a null ResultSet 'rs'.
// In case, if any exception occurs then next line of code won't execute.
// So, no problem if I won't check rs as null.
if (rs.next()) {
do {
// Logic to retrieve the data from the resultset.
// eg: rs.getString("abc");
} while(rs.next());
} else {
// No data
}
- 1. Comment savoir si un contenu iframe est vide ou non?
- 2. Python - Vérifie si un fichier est vide ou non
- 3. Comment trouver si un fichier est fragmenté ou non?
- 4. Pour vérifier si un objet est vide ou non
- 5. Java - Trouver si les cookies sont désactivés ou non
- 6. comment trouver si WCF 4.0 est installé ou non
- 7. ResultSet vide après l'exécution PreparedStatement
- 8. Le pilote JDBC lève l'exception "ResultSet Closed" sur vide ResultSet
- 9. vérification champ caché est vide ou non
- 10. Comment afficher un ResultSet java visuellement?
- 11. Comment trouver si une page redirige ou non?
- 12. Vérifiez si ResultSet est Null si pas alors obtenir int
- 13. Comment déterminer si une matrice est vide ou non dans matlab?
- 14. Si UITextField ou NSString est vide
- 15. Comment trouver si un personnage est GB2312 en java
- 16. Comment vérifier si jQuery datepicker est vide?
- 17. Comment vérifier si un lien est actif ou non?
- 18. Comment trouver si un téléphone est en mode veille ou non ???
- 19. Pourquoi main() dans java est-il vide?
- 20. Comment savoir si un multiprocessing.Lock Python est publié ou non?
- 21. Comment vérifier si resultset a une ligne ou plus?
- 22. Problème avec SQL, ResultSet dans Java
- 23. Comment déterminer si une fonction est vide
- 24. Règles GC: comment trouver un objet java est éligible pour la collecte des ordures ou non
- 25. Comment vérifier la grille vue est vide ou non
- 26. Comment créer un Java ResultSet disponible dans mon jsp?
- 27. Trouver un membre est en ligne ou non
- 28. Comment déterminer si le résultat sélectionné est vide ou non avec jQuery?
- 29. En utilisant jQuery, comment vérifier si une cellule de table est vide ou non?
- 30. Java ResultSet comment getTimestamp UTC
Toutefois, si le jeu de résultats n'est pas vide, vous devez maintenant déplacer le curseur, ignorant ainsi la première ligne. – monopoint
@monopoint exactement – momomo
@Paul Je crois que vous devriez mettre à jour votre réponse pour la compléter en réinitialisant le curseur juste avant la première ligne dans le bloc else si elle n'est pas vide, c'est-à-dire 'else {rs.beforeFirst(); } ' – sactiw