ホームページ >データベース >mysql チュートリアル >.NET で LIKE 条件と IN 条件を使用してクエリをパラメータ化する方法

.NET で LIKE 条件と IN 条件を使用してクエリをパラメータ化する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-27 06:43:13840ブラウズ

How to Parameterize Queries with LIKE and IN Conditions in .NET?

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

.NET でパラメーター化されたクエリを使用する場合、例では通常、次のような単純なシナリオでの使用方法を示します。単一の列の値をパラメータと比較します。ただし、複数のパラメータや非標準文字が含まれる IN や LIKE などの条件を扱う場合、状況はより複雑になる可能性があります。

IN 条件を使用したクエリ

を考えてみましょう。カテゴリ ID に基づいて製品を検索するクエリ。カテゴリ ID には、カンマ区切りのリストを指定できます。 integers.

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 

整数配列 CategoryID を使用してこのクエリをパラメータ化するには、配列をループしてカテゴリ ID ごとにパラメータを作成する必要があります。

int[] categoryIDs = new int[] { 238, 1138, 1615, 1616, 1617 };

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.CommandText = "SELECT * FROM Products WHERE Category_ID IN (";
comm.CommandText += string.Join(",", parameters) + ")";

Query LIKE 条件付き

次に、次の内容を含む名前の製品を検索する LIKE 条件を追加しましょう。特殊文字を含む特定の文字列。

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 
   OR  name LIKE '%@name%'

このクエリをパラメータ化するには、Name 値のパラメータを作成し、連結を使用してクエリ内の名前を検索します。

string Name = "someone";

SqlCommand comm = conn.CreateCommand();

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";

このアプローチを使用すると、さまざまなパラメーター タイプで IN 条件と LIKE 条件の両方を処理する完全にパラメーター化されたクエリを作成でき、データベース アクセスのセキュリティとパフォーマンスを確保できます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。