2017-02-05 3 views
1

私はウェブページを持っているので、そこではカラムを選択してカラムをフィルタリングし、検索ボタンをクリックすると完全なwhere句を渡してストアドプロシージャを呼び出す必要があります。where節をSQL Serverストアドプロシージャに渡す方法は?

SQLインジェクションが発生する可能性があるため、ストアドプロシージャにwhere句を渡すのは悪い考えです。

これは

Filter Page

私のページである私の判断基準に他の方法はありますか?私は演算子で値を渡す必要があります。ユーザーは異なる状況で異なる比較演算子を選択する可能性があるため、

答えて

0

このようなwhere節を渡すことは、実際には非常に悪い習慣になります。いくつかのオプションがあります。ですから、このvableを構築ConditionColumnValue

    1. 使用Entity Frameworkを使用table-valued parameters生のクエリに
    2. を構築するためには、ストアドプロシージャ
      • には3つの列を含めることができますあなたのコードの変数とSQL Serverストアドプロシージャにこれらの値に基づいて、クエリを動的に構築することができますに送信します。
    3. 他にも解決策がいくつかありますが、これが最初の正しい解決策です。
  • +0

    私はこの '[DBO]プロシージャを作成します。[MYPROC] @whereSqlのnvarchar(256) AS EXEC( '[テーブル]の[フィールド]を選択' + @whereSql) GOのように作成する可能性があります' –

    +0

    @Abbas推奨しません。 –

    +0

    EntiryFrameworkを使用しないでください。 – Phill

    関連する問題