首页 >数据库 >mysql教程 >如何在 Java 中安全地将参数传递给 JDBCPreparedStatement?

如何在 Java 中安全地将参数传递给 JDBCPreparedStatement?

Linda Hamilton
Linda Hamilton原创
2024-11-24 13:40:12566浏览

How to Safely Pass Parameters to a JDBC PreparedStatement in Java?

将参数传递给 JDBCPreparedStatement

您正在尝试通过连接到 MySQL 数据库并基于以下内容检索特定行来为 Java 程序创建验证类:构造函数参数。但是,您的代码未按预期运行。

要解决此问题,您需要修改代码以使用 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);
        }
    }
}

通过合并这些更改,您可以将能够有效地将参数传递给您的 JDBCPreparedStatement,降低 SQL 注入风险并确保从数据库中正确检索数据。

以上是如何在 Java 中安全地将参数传递给 JDBCPreparedStatement?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn