簡體   English   中英

Java PreparedStatement:將參數綁定到HASHBYTES

[英]Java PreparedStatement: Binding Parameter to HASHBYTES

現在,我有下面准備好的聲明,該聲明有效:

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

像這樣傳遞“密碼”占位符: '?' 也不起作用。 參數化此查詢的正確方法是什么?

在prepared語句中查看此SQL Server sha1值給出的值不同於硬編碼字符串

PS以這種方式回答,因為我還不能發短信評論。

使用大家都指出的信息並研究如何在SQL Server中轉換類型,我得出了以下代碼:

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

請確認它是否適合您!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM