我有一个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)."
我已尝试使用和不使用'围绕参数,但它给了我一个语法错误。
答案 0 :(得分:1)
您的SQL不应包含参数周围的'
(绑定)字符。
将SQL更改为:
String SQL = "SELECT salt FROM users WHERE email = ?";