ホームページ >データベース >mysql チュートリアル >.NET で LIKE 条件と IN 条件を使用してクエリをパラメータ化する方法
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 サイトの他の関連記事を参照してください。