アイテムを検索するための検索画面があるとします。画面にはさまざまなオプションの検索オプションがあり、SQLクエリー・ステートメントが変化します。ここ<= Nパラメータを受け入れるパラメータ化クエリまたはストアドプロシージャを作成する方法はありますか?
いくつかの例示的な検索である:
- 説明検索
- 説明Search +アイテムサプライヤID
- 説明Search +アイテムサプライヤID +アイテムの階層レベル1 ID
- 説明Search +アイテムサプライヤーid +アイテム階層レベル1 id +レベル2 id
- アイテム階層レベル1 id +レベル2 id(説明なし、アイテムサプライヤIDなし)
...あなたはアイデアを得る。かなり多くの組み合わせが可能です。私は、パフォーマンス上の利点などのためにパラメータ化されたクエリを使用することを望んでいました(そして、私はプログラム全体でクエリの残りの部分を使用しています)。
これを行う方法はありますか、またはSQLiteCommandオブジェクトと一致する各クエリを作成するか、選択したオプションに基づいてStringBuilderを使用してクエリ文字列を動的に作成する必要がありますか?
私は3.5コンパクトフレームワーク上のC#3.0でSQLite.NETデータプロバイダを使用しています。
UPDATE
パラメータと(@param isnull or column = @param)
を使用するためのnullデフォルト値を持つ提案のいくつかに基づいて、私はこの作業を取得することができるはずだと思います。私はあなたの投稿を続けます。
注:コードの残りの部分がストアドプロシージャの代わりにパラメータ化されたクエリを使用するため、ストアドプロシージャの使用を避けています。私は将来のメンテナンスプログラマーの健全性のためにすべてを一貫して保っていきたいと思っています。とにかくあまり差をつけすぎてはいけません。
UPDATE 2
これは(私は、クエリのための私の最初のテストをしたところである)デスクトップシステム上大きなを働きました。しかし、使用していたWindows CEデバイスでは非常に遅いです。まれに遅い。すべて同じ、私は間違いなく将来これを使うことができ、とても便利です。モバイルデバイスでクエリを実行しているときだけではありません。
ありがとうございました
私はあなたのクエリを動的に構築する方法を示しますが、パラメータ注入警察は私の後になります。 –
質問のタイトルは可変数のパラメータを示します。しかし、N個のパラメータを持つが、N個または
shahkalpesh
@Robert)おそらく –