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

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

Susan Sarandon
リリース: 2024-12-27 06:43:13
オリジナル
879 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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