现在,我准备了下面的语句,它很有效:
SELECT email, password
FROM Professor
WHERE email = ? AND password = HASHBYTES('SHA1','" + password + "')
p.setString(1, email);
但是当我试图参数化要用 HASHBYTES 加密的值(在本例中是变量 'password')时,出现了某种阅读/类型/转换错误,没有返回结果。
SELECT email, password
FROM Professor
WHERE email = ? AND password = HASHBYTES('SHA1', ?)
p.setString(1, email);
p.setString(2, password);
我根本没有得到任何错误消息;结果集在rowCount属性中返回“-3”。我使用的是SQL Server。
传递 'password' 占位符,如下所示:“'?'* 也不起作用。参数化此查询的正确方法是什么?
2条答案
按热度按时间pbpqsu0x1#
使用您所指出的信息并研究如何在SQL Server中转换类型,我得到了以下代码:
请验证它是否适合您!
6g8kf2rb2#
看看这个SQL Server sha1 value in prepared statement gives a different value than hardcoded string
p.s这样回答,因为我还不能发短信评论。