ホームページ > データベース > mysql チュートリアル > .NET で LIKE 条件と IN 条件を含むパラメーター化されたクエリを効果的に使用する方法

.NET で LIKE 条件と IN 条件を含むパラメーター化されたクエリを効果的に使用する方法

Patricia Arquette
リリース: 2024-12-29 05:38:17
オリジナル
159 人が閲覧しました

How to Effectively Use Parameterized Queries with LIKE and IN Conditions in .NET?

LIKE 条件と IN 条件を使用したパラメータ化されたクエリ

.Net でのパラメータ化されたクエリの使用は、通常、次の例に示すように特定のパターンに従います。

SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID = @categoryid
", 
   conn);
comm.Parameters.Add("@categoryid", SqlDbType.Int);
comm.Parameters["@categoryid"].Value = CategoryID;
ログイン後にコピー

ただし、IN や LIKE などの条件を使用してより複雑なクエリを実行すると、

IN 条件と LIKE 条件の実装

カンマ区切りの文字列として保存されたカテゴリ ID のリストと、特殊文字が含まれる可能性のある製品名がある場合を考えてみましょう。このシナリオのパラメータ化されたクエリを構築するには:

  1. IN 条件を分解します: カンマ区切りのカテゴリ ID 文字列を整数の配列に変換します。

    int[] categoryIDs = Array.ConvertAll(CategoryIDs.Split(','), int.Parse);
    ログイン後にコピー
  2. パラメータの生成names: 一連のパラメーター名を作成します (例: @p0、@p1、@p2 など)。

    string[] parameters = new string[categoryIDs.Length];
    for (int i = 0; i < categoryIDs.Length; i++)
    {
       parameters[i] = "@p" + i;
    }
    ログイン後にコピー
  3. コマンドにパラメーターを追加します。 : 対応するカテゴリ ID をそのパラメータとしてコマンドに追加します。 value.

    for (int i = 0; i < categoryIDs.Length; i++)
    {
       comm.Parameters.AddWithValue(parameters[i], categoryIDs[i]);
    }
    ログイン後にコピー
  4. IN 条件を作成します: クエリの IN 句内でパラメータ名をカンマ区切りの文字列に結合します。

    WHERE Category_ID IN (" + string.Join(",", parameters) + ")
    ログイン後にコピー
  5. 「いいね」を処理する条件: ワイルドカード文字と入力文字列を使用して、LIKE 条件をパラメータ化します。

    OR name LIKE @name
    ログイン後にコピー

    ここで、@name は、入力文字列を値としてコマンドに追加されるパラメータです。

すべてをまとめると、パラメーター化されたクエリは次のようになります。

string Name = "someone";
int[] categoryIDs = new int[] { 238, 1138, 1615, 1616, 1617, 1618, 1619, 1620, 1951, 1952 };

SqlCommand comm = conn.CreateCommand();

string[] parameters = new string[categoryIDs.Length];
for(int i=0;i<categoryIDs.Length;i++)
{
   parameters[i] = "@p"+i;
   comm.Parameters.AddWithValue(parameters[i], categoryIDs[i]);
}
comm.Parameters.AddWithValue("@name",$"%{Name}%");
comm.CommandText = "SELECT * FROM Products WHERE Category_ID IN (";
comm.CommandText += string.Join(",", parameters) + ")";
comm.CommandText += " OR name LIKE @name";
ログイン後にコピー

Thisこのアプローチでは、適切なパラメータ化で IN 条件と LIKE 条件の両方に対処する、完全にパラメータ化されたクエリを作成します。

以上が.NET で LIKE 条件と IN 条件を含むパラメーター化されたクエリを効果的に使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート