这个问题在这里已经有答案了:
preparedstatement忽略查询中的参数:java.sql.sqlexception:参数索引超出范围(1>参数数,即0)[重复](2个答案)
java.sql.sqlexception参数索引超出范围(1>参数个数,为0)[已关闭](2个答案)
准备好的声明(2个答案)
两年前关门了。
我有一个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)."
我试过在参数前后加上和不加'around',但是它给了我一个语法错误。
1条答案
按热度按时间xu3bshqb1#
您的sql不应包含
'
(绑定)参数周围的字符。preparedstatement将自动添加字符
将sql更改为: