Primero, deje de construir SQL así:use SQL parametrizado y un PreparedStatement
. Su código actual es vulnerable a los ataques de inyección SQL.
Básicamente, no llames a rs.next()
dos veces seguidas (primero en el if
luego en el while
)... puedes hacerlo fácilmente convirtiendo tu while
bucle en un do/while
bucle:
if (rs.next()) {
do {
System.out.print(rs.getString("idUser") + " ,");
System.out.print(rs.getString("Name") + " ,");
System.out.print(rs.getString("Email") + " ,");
System.out.println(rs.getString("country") + " .");
} while (rs.next());
}
O simplemente tener el while
loop, con una variable separada para detectar que has visto algunos resultados:
bool anyResults = false;
while (rs.next()) {
anyResults = true;
System.out.print(rs.getString("idUser") + " ,");
System.out.print(rs.getString("Name") + " ,");
System.out.print(rs.getString("Email") + " ,");
System.out.println(rs.getString("country") + " .");
}
if (!anyResults) {
JOptionPane.showMessageDialog(null, "Not Found");
}
(Además, debe usar try-with-resources para cerrar su ResultSet
etc., y simplemente imprimir un seguimiento de la pila en la salida estándar casi nunca es la forma adecuada de manejar las excepciones...)