Je le posterai en pensant que si quelqu'un faisait la même erreur.
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.
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;
}
Un certain code source a été modifié. Merci d'avoir signalé saka1029 et Kilisame!