0

現在、私は以下の準備されたステートメントを持っています。

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を使用しています。

「パスワード」プレースホルダーを次のように渡します: 「?」どちらも機能しません。このクエリをパラメータ化する正しい方法は何ですか?

4

2 に答える 2

1

皆さんが指摘した情報を使用して、SQL Server で型を変換する方法について調査した結果、次のコードにたどり着きました。

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

それがあなたのために働くかどうかを確認してください!

于 2016-05-09T03:22:11.007 に答える
0

準備されたステートメントでこのSQL Server sha1 値を確認すると、ハードコードされた文字列とは異なる値が返されます

私はまだテキストコメントを書くことができないので、psはこのように答えます。

于 2016-04-26T19:58:01.707 に答える