Java准备语句:与HASHBYTES的结合参数

s5a0g9ez  于 2023-02-28  发布在  Java
关注(0)|答案(2)|浏览(106)

现在,我准备了下面的语句,它很有效:

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' 占位符,如下所示:“'?'* 也不起作用。参数化此查询的正确方法是什么?

pbpqsu0x

pbpqsu0x1#

使用您所指出的信息并研究如何在SQL Server中转换类型,我得到了以下代码:

select email, password
  from Professor
 where email = ?
   and password = hashbytes('sha1', convert(varchar, ?))

请验证它是否适合您!

相关问题