Java JDBC试图使用null参数从MySQL数据库检索salt
我有一个JDBC方法从用户检索salt,以便在登录时验证用户 以下是我的方法:Java JDBC试图使用null参数从MySQL数据库检索salt,java,mysql,sql,jdbc,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
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)."
我尝试过使用和不使用参数周围的'around',但它会给我一个语法错误。您的SQL不应该在参数周围包含
'
(绑定)字符
用户将自动添加字符
将SQL更改为:
String SQL = "SELECT salt FROM users WHERE email = ?";
不要将
?
放在单引号之间每当我这样做时,我都会收到一个语法错误,如果我把这个字符串放在MySQL workbench中,它会返回salt,就像它应该返回的一样,但是如果没有单引号,我会收到一个语法错误,您会得到什么语法错误?字段列表中的未知列“salt”