MySQL データベースに接続し、コンストラクターのパラメーター。ただし、コードは意図したとおりに機能しません。
この問題を解決するには、setString() メソッドを使用して userID パラメータを設定するようにコードを変更する必要があります。これにより、ステートメントが正しくフォーマットされるだけでなく、データベースのセキュリティにとって重要な SQL インジェクションも防止されます。
更新されたコード スニペットは次のとおりです:
import java.sql.*; import java.sql.PreparedStatement; import java.sql.Connection; public class Validation { private PreparedStatement statement; private Connection con; private String x, y; public Validation(String userID) { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test", "root", ""); statement = con.prepareStatement( "SELECT * from employee WHERE userID = ?"); statement.setString(1, userID); ResultSet rs = statement.executeQuery(); while (rs.next()) { x = rs.getString(1); System.out.print(x); System.out.print(" "); y = rs.getString(2); System.out.println(y); } } catch (Exception ex) { System.out.println(ex); } } }
これらの変更を組み込むことで、パラメータを JDBC PreparedStatement に効果的に渡すことができるため、SQL インジェクションのリスクが軽減され、データベースからデータを正しく取得できるようになります。
以上がJava で JDBC PreparedStatement にパラメータを安全に渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。