JDBC尝试使用null参数从MySQL数据库中检索salt

时间:2018-06-04 14:09:11

标签: java mysql sql jdbc

我有一个JDBC方法从用户检索salt,以便在登录时验证用户。

这是我的方法:

 public static byte[] getSaltMethod(String username) throws SQLException, LoginSampleException {

    try {

        Connection con = Connector.connection();

        String SQL = "SELECT salt FROM users WHERE email = '?'";

        PreparedStatement statement = con.prepareStatement(SQL);
        statement.setString(1, username);


        ResultSet set = statement.executeQuery();

        while (set.next()) {

            byte[] salt = set.getBytes("salt");

            /* jeg er i tivil om denne skal være her*/

            return salt;
        }

    } catch (SQLException ex) {
        Conf.MYLOGGER.log(Level.SEVERE, null, ex);
        throw new LoginSampleException(ex.getMessage());
    }
    return null;

}
}

我已使用调试器尝试识别问题并收到此错误消息

"Parameter index out of range (1 > number of parameters, which is 0)."

我已尝试使用和不使用'围绕参数,但它给了我一个语法错误。

1 个答案:

答案 0 :(得分:1)

您的SQL不应包含参数周围的'(绑定)字符。

PreparedStatement

会自动添加字符

将SQL更改为:

  String SQL = "SELECT salt FROM users WHERE email = ?";