![](/img/trans.png)
[英]PreparedStatement Largest Query with Parameter Not Executing in Java
[英]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.