Primeiro, pare de construir SQL assim - use SQL parametrizado e um
PreparedStatement
. Seu código atual é vulnerável a ataques de injeção de SQL. Basicamente, não chame
rs.next()
duas vezes seguidas (primeira no if
então no while
)... você pode fazer isso facilmente convertendo seu while
loop em um do/while
ciclo: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());
}
Ou apenas tem o
while
loop, com uma variável separada para detectar que você viu algumas 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");
}
(Além disso, você deve usar try-with-resources para fechar seu
ResultSet
etc, e apenas imprimir um rastreamento de pilha para stdout quase nunca é a maneira apropriada de lidar com exceções ...)