[JAVA] Next () de Resultset n'est pas une "méthode pour déterminer s'il y a un ResultSet next".

Il s'avère qu'il avait mal compris rs.next ().

Je le posterai en pensant que si quelqu'un faisait la même erreur.

À propos de l'interprétation de rs.next ()

Je pensais que rs.next () était "une méthode qui détermine uniquement s'il y a un ResultSet suivant"

De plus, il semble y avoir une fonction pour "aller à la ligne suivante à partir de la position actuelle et placer le curseur". (Pour plus de détails, voir Page Oracle.)

erreur.java


ResultSet rs = stmt.executeQuery(sql);

//S'il n'y a pas de résultat, retourne null
if(rs.next()){                       //← Ici, le curseur est sur la première ligne du résultat
    return null;
}

//2.Générer une liste
while (rs.next()) {                  //← Ici, le curseur est sur la deuxième ligne du résultat
    list.add(rs.getString("name"));  //← Ici, le nom de la deuxième ligne est pris comme résultat
}

Je codais comme ci-dessus. Faux. La liste générée par java est une ligne de moins que de frapper SQL avec une commande! J'étais inquiet pendant une heure ... Cela devrait l'être aussi.

Avant de tourner avec while, le curseur a frappé la première ligne du résultat, donc Quand j'ai essayé de le tourner avec while, le curseur a frappé la deuxième ligne du résultat, La première ligne du résultat n'a pas été ajoutée à la liste.

Cas correct

Pour référence, si vous procédez comme suit, il semble que le traitement lorsque le résultat est 0 est également appliqué.

Bonne réponse.java


ResultSet rs = stmt.executeQuery(sql);

//Ajouter des données à la liste
while (rs.next()) {
    list.add(rs.getString("Nom de domaine"));
}

//Si la liste provient de, renvoie null
if(list.isEmpty()){
    return null;
}

Postscript

Un certain code source a été modifié. Merci d'avoir signalé saka1029 et Kilisame!

Recommended Posts

Next () de Resultset n'est pas une "méthode pour déterminer s'il y a un ResultSet next".
Le cas où le prochain () de Resultset a été confondu avec la méthode de jugement de l'existence ou non
Utilisez Modifier # isStatic pour déterminer si la méthode [Reflection] est statique.
S'il y a une transition d'état, créons une classe State
Enfin, créez une méthode pour savoir s'il y a un caractère
Comment créer une méthode
Que faire lorsque javax.el.ELException: Pas une expression de méthode valide: s'affiche lorsque l'écran JSF est affiché
[Ubuntu 20.04] Que faire si le moniteur externe n'est pas reconnu
[Rails] Que faire si les données ne sont pas enregistrées dans la base de données
Que faire si vous mourez avec zip si vous avez pom lors de la création d'un fichier exécutable avec gradle
Que faire si l'opération non autorisée s'affiche lors de l'exécution d'une commande dans le terminal
Le calendrier Java n'est pas un singleton.
Ne pas être un oncle statique
Que faire si l'image d'arrière-plan n'est pas appliquée après le déploiement
Que faire lorsque le préfixe c n'est pas lié dans JSP
[Java] Le branchement conditionnel est une instruction if, mais il existe également un opérateur conditionnel.
Obtenez le type d'un élément d'un tableau pour déterminer s'il s'agit d'un tableau
Si la méthode HTTP n'est pas spécifiée, le côté navigateur demande avec GET