2010-12-13 18 views
2

私はこのようなクエリを持っている:私は、パラメータを指定するために把握することができますOdbcCommandで名前付きパラメータを使用できますか?

string command = @"SELECT COUNT(*) as cnt, 
(
     SELECT COUNT(*) FROM attend 
     WHERE (DATEPART(WEEKDAY,start_date) = 2 OR DATEPART(WEEKDAY,start_date) = 6) 
      AND empl_no = ? and pay_code = '051' 
       AND start_date BETWEEN ? AND ? 
     ) as frimon 
FROM attend as a 
WHERE empl_no = ? and pay_code = '051'"; 

唯一の方法は、(SqlCommandオブジェクトで@nameメソッドを使用するのではなく)?です。これにより、同じパラメータを複数回指定する必要があります(empl_noなど)。名前付きパラメータをOdbcCommandsで使用する方法はありますか?名前付きパラメータを一度指定するだけです。

答えて

1

残念ながら、これを回避する方法の1つは、独自のクラスをロールバックして、独自のパラメータコレクションを定義してトークンの置換を使用することです。

+0

SQLインジェクション攻撃の可能性を導入していない名前付きパラメータを置き換えるために独自のコードをローリングするときは注意してください。http://en.wikipedia.org/wiki/Sql_injection –

関連する問題