ホームページ > データベース > mysql チュートリアル > .NET クエリで LIKE 条件と IN 条件をパラメータ化するにはどうすればよいですか?

.NET クエリで LIKE 条件と IN 条件をパラメータ化するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-01 07:37:10
オリジナル
453 人が閲覧しました

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

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

.Net のパラメータ化されたクエリでは、通常、特定のパラメータ名を使用し、これらのパラメータに値を追加します。ただし、複数のパラメータ値または動的なパラメータ値が必要になる可能性がある IN や LIKE などの条件を扱う場合、構文はより複雑になる可能性があります。

具体的なパラメータについて説明します。質問:

クエリ:

SELECT * 
FROM Products 
WHERE Category_ID IN (@categoryids) 
OR name LIKE '%@name%'
ログイン後にコピー

パラメータ:

  • カテゴリ ID:カンマで区切られた数値のリスト。引用符。
  • 名前: 特殊文字を含む可能性のある文字列。

変更された構文:

作成するには完全にパラメータ化されたクエリでは、IN 条件のパラメータ名と値を動的に構築する必要があります。これは、ループを使用して実現できます:

int[] categoryIDs = ...;
string Name = ...;

SqlCommand comm = ...;

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}%");
ログイン後にコピー

変更されたクエリ テキスト:

生成されたパラメータ名を IN 条件に連結します:

WHERE Category_ID IN (@p0, @p1, ...)
ログイン後にコピー

最終的なクエリ テキストは次のようになります:

SELECT * 
FROM Products 
WHERE Category_ID IN (@p0, @p1, ...) 
OR name LIKE @name
ログイン後にコピー

このアプローチ各CategoryIDが個別にパラメータ化され、LIKE条件も適切なパターン構文でパラメータ化されることが保証されます。クエリを完全にパラメータ化することで、SQL インジェクションを防止し、パフォーマンスを向上させます。

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

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