2009-05-02 11 views
0

私は流暢なnhibernateを使用しています。問題は、 "はcustomerId =?" である 流暢なnhibernate:where句の問題

select column1,column2,column3 from table where CustomerId=? 

ようにNHibernateはによって生成されたクエリがある

var data = session.CreateCriteria(typeof(CustomerNameValueList)) 
         .Add(Expression.Eq("CustomerId","3")) 
         .List<CustomerNameValueList>(); 

が、私のようなコードの一部を書かれている

は、見えます expeted:?。。 '?' のCustomerId = 3"

理由はcustomerId =というよりはcustomerId = 3

私を助けてください

+1

あなたは –

+0

問題は "customerId =?"となりました.Exceled:CustomerId = 3 " なぜcustomerId =?という質問が表示されますが、この質問には何も問題はありません。 customerId = 3ではなく –

+0

どこから問い合わせを受け取りましたか?それは実際にデータベースに対して実行されていますか? –

答えて

2

このクエリは何も問題はありませんログの "3"の文字列値で置き換えられます。あなたの列の型が実際にint型である場合、ここで問題が発生する可能性があります。クエリのパラメータ化は、SQLインジェクション攻撃に対してあなたを保護したいものです。あなたが期待していたCustomerId = '3'と '3'がWebページのテキストボックスから来た場合、MyUserTableから '3' DELETE FROM MyUserTableなどのより多くのSQLを注入することが可能です。