java 初学者遇到的怪问题 ,请高手解答一下
很奇怪的问题 : 用MD5加密password后 用占位符(?)设置参数的方式竟然查询不出来了
代码如下(数据库中有表userinfo 字段 loginname(内容admin) 、 password(内容admin加密后的密文,一样的加密方式),部分代码已忽略):
String loginName= "admin";
String password = "admin";
Session session = HibernateSessionFactory.getSession();
//md5加密
MessageDigest md5MD = null;
try {
md5MD = MessageDigest.getInstance("md5");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] pwdByte =password.getBytes();
md5MD.update(pwdByte);
byte[] newpwdByte = md5MD.digest();
password = new String(newpwdByte);
Connection conn = session.connection();
PreparedStatement pstmt = null;
try {
String sql = "select * from userinfo where loginname=? and loginpwd=?";
pstmt = conn.prepareStatement(sql);
System.out.println(pstmt);
pstmt.setString(1, loginName);
pstmt.setString(2, password);//为什么这里设置了第二参数就查询不出来了?(这里不用占位符就能查询出来,就是把sql改为sql= "select * from userinfo where loginname=? and loginpwd= '"+password+"'",却能查询出来) ResultSet rs = pstmt.executeQuery();
if(rs.next()) {
System.out.println("pstmt"+rs.getString("loginName"));
}
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}