まず、そのようなSQLの構築を停止します-パラメーター化されたSQLとPreparedStatement
を使用します 。現在のコードはSQLインジェクション攻撃に対して脆弱です。
基本的に、rs.next()
は呼び出さないでください 2回続けて(最初はif
次に、while
)... while
を変換することで、簡単に行うことができます。 do/while
にループします ループ:
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());
}
またはちょうど while
ループ、あなたがいくつかを見たことを検出するための別の変数 結果:
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");
}
(さらに、try-with-resourcesを使用してResultSet
を閉じる必要があります など、スタックトレースをstdoutに出力するだけでは、例外を処理する適切な方法はほとんどありません...)