>데이터 베이스 >MySQL 튜토리얼 >.NET에서 LIKE 및 IN 조건을 사용하여 쿼리를 매개 변수화하는 방법은 무엇입니까?

.NET에서 LIKE 및 IN 조건을 사용하여 쿼리를 매개 변수화하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-27 06:43:13838검색

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

LIKE 및 IN 조건을 사용한 매개변수화된 쿼리

.NET에서 매개변수화된 쿼리를 사용할 때 예제에서는 일반적으로 다음과 같은 간단한 시나리오에서 쿼리를 사용하는 방법을 보여줍니다. 단일 열 값을 매개변수와 비교합니다. 그러나 여러 매개변수 또는 비표준 문자가 포함된 IN 및 LIKE와 같은 조건을 처리할 때는 상황이 더 복잡해질 수 있습니다.

IN 조건을 사용한 쿼리

카테고리 ID를 기준으로 제품을 검색하는 쿼리입니다. 여기서 카테고리 ID는 쉼표로 구분된 목록일 수 있습니다.

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 

정수 배열 CategoryIDs를 사용하여 이 쿼리를 매개변수화하려면 배열을 반복하고 각 카테고리 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) + ")";

쿼리 with LIKE 조건

이제 이름에 특정 문자열이 포함된 제품을 검색하는 LIKE 조건을 추가해 보겠습니다. 특수 문자도 가능합니다.

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 
   OR  name LIKE '%@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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.