MySQL 매개 변수에서 OR 문 사용

sora0419

내 C # 응용 프로그램에서 MySQL 쿼리를 구성하려고하는데 MySQL 매개 변수에서 OR 문을 사용할 수 있는지 궁금합니다.

이름 목록이 있고 데이터베이스에 이미 존재하는 이름이 무엇인지 확인하고보고 싶습니다. 다음은 간단한 예입니다.

List<string> names = new List<string> {"adam", "bob", "cathy"}; //actual list is much longer
MySqlConnection connection = getAndOpenConnection();
MySqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT * FROM Employees WHERE name = @names";
command.Parameters.Add(new MySqlParameters("@names", String.Format("names = {0}", String.Join(names, " or name = ")))); //is this line legal?

내 원래 아이디어는 다음과 같이 명령 텍스트를 구성하는 것입니다.

command.CommandText = String.Format("SELECT * FROM Employees WHERE name = '{0}'", String.Join(names, "' or name = '"))

코드는 내가 원하는 올바른 명령 텍스트를 제공하지만 SQL 삽입을 정말로 방지하고 싶습니다.

누군가 MySqlCommand를 올바르게 구성하는 방법에 대해 저를 도울 수 있습니까?

마크 그 라벨

쉽지는 않습니다. 당신은 그것을 IN쿼리 로 만들어야 하는데, 이것은 매개 변수화와 관련하여 고통 스럽습니다. 기본적으로 두 가지 옵션이 있습니다.

  • 어레이 크기에 따라 적절한 명령 및 매개 변수를 빌드합니다.
  • 당신을 위해 그것을 할 도구를 사용하십시오

후자는 더 쉽습니다. "dapper"를 사용하면 다음과 같습니다.

connection.Query("SELECT * FROM Employees WHERE name in @names", new { names })
          .ToList();

(이는 것 List<dynamic>, 당신이있는 경우 Employee열을 일치 클래스를 사용할 수 connection.Query<Employee>(...).ToList()얻을 List<Employee>대신을).

그러나 전자는 (간단한 버전의 경우) 더 비슷합니다.

var sb = new StringBuilder("SELECT * FROM Employees WHERE name=@name0");
cmd.Parameters.AddWithValue("name0", names[0]);
for(int i = 1; i < names.Count ; i++) {
    sb.Append(" or name=@name").Append(i);
    cmd.Parameters.AddWithValue("name" + i, names[i]);
}
cmd.CommandText = sb.ToString();

다른 몇 가지 방법도 있습니다.

switch(names.Count)
{
    case 0: cmd.CommandText = "SELECT * FROM Employees"; break;
    case 1:
        cmd.CommandText = "SELECT * FROM Employees WHERE name=@name";
        cmd.Parameters.AddWithValue("name", names[0]);
        break;
    default:
        var sb = new StringBuilder(
            "SELECT * FROM Employees WHERE name IN (@name0")
        cmd.Parameters.AddWithValue("name0", names[0]);
        for(int i = 1;i<names.Count;i++) {
            sb.Append(",@name").Append(i);
            cmd.Parameters.AddWithValue("name" + i, names[i]);
        }
        cmd.CommandText = sb.Append(")").ToString();
        break;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

select 문에서 사용할 MySQL 저장 프로 시저 구문 분석 날짜 매개 변수

분류에서Dev

터미널에서 문자열 매개 변수 사용

분류에서Dev

if / else 문의 매개 변수에서 next () 사용

분류에서Dev

메서드에서 매개 변수로 클래스를 전달하고 If 문에서이 매개 변수 사용

분류에서Dev

매개 변수에서 springboot 자바 mysql 구문 오류

분류에서Dev

COUNTIF 함수에서 IF 문을 매개 변수로 사용할 수 있습니까?

분류에서Dev

mysql과 유사한 문자열의 매개 변수 대체

분류에서Dev

MySQL 및 Python : 모든 매개 변수가 SQL 문에 사용 된 것은 아닙니다.

분류에서Dev

SELECT 문에서 매개 변수를 사용할 때 성능 문제

분류에서Dev

쓰레드 입문 : 쓰레드 매개 변수에서 std :: ref () 사용 문제

분류에서Dev

본문에 매개 변수를 사용하여 Rails API POST 작업 문서화

분류에서Dev

Python의 함수에서 입력 문을 매개 변수로 사용

분류에서Dev

MySQL8 프로 시저-커서에서 매개 변수 사용

분류에서Dev

mysql select 문에서 두 개의 PHP 변수 활용

분류에서Dev

매개 변수가있는 문자열을 사용하여 mySQL에서 데이터를 가져 오는 방법은 무엇입니까?

분류에서Dev

C #에서 문자열을 매개 변수로 사용하는 방법

분류에서Dev

import 문에서 매개 변수를 어떻게 사용합니까?

분류에서Dev

문자열 목록에서 정렬 및 키 매개 변수 사용

분류에서Dev

AFNetworking에서 URL 매개 변수 및 JSON 본문을 사용한 POST

분류에서Dev

준비된 명령문 매개 변수에서 테이블 컬럼 사용

분류에서Dev

Android Java에서 문자열 매개 변수로 onclick 리스너 재사용

분류에서Dev

if 문에서 공용 변수를 기반으로 SQL 매개 변수 변경

분류에서Dev

Python을 사용하여 데이터를 MYSQL로 가져 오는 문제 (오류 코드 : "SQL 문에 모든 매개 변수가 사용되지 않음)

분류에서Dev

문자열 매개 변수에 사용되는 Javascript * and * 연산자

분류에서Dev

지시문에서 컨트롤러 함수 호출 (지시문에서 전달 된 매개 변수 사용)

분류에서Dev

다른 매크로의 문자열 매개 변수 내에서 Freemarker 매크로 호출 사용

분류에서Dev

PHP Mysql $ Id 문제는 매개 변수로 $ id 만 사용하여 데이터를 검색 할 수 없음

분류에서Dev

MySQL보기에서 변수 나 매개 변수를 사용할 수 있습니까?

분류에서Dev

경로에 문화 매개 변수를 사용하여 문화 변경

Related 관련 기사

  1. 1

    select 문에서 사용할 MySQL 저장 프로 시저 구문 분석 날짜 매개 변수

  2. 2

    터미널에서 문자열 매개 변수 사용

  3. 3

    if / else 문의 매개 변수에서 next () 사용

  4. 4

    메서드에서 매개 변수로 클래스를 전달하고 If 문에서이 매개 변수 사용

  5. 5

    매개 변수에서 springboot 자바 mysql 구문 오류

  6. 6

    COUNTIF 함수에서 IF 문을 매개 변수로 사용할 수 있습니까?

  7. 7

    mysql과 유사한 문자열의 매개 변수 대체

  8. 8

    MySQL 및 Python : 모든 매개 변수가 SQL 문에 사용 된 것은 아닙니다.

  9. 9

    SELECT 문에서 매개 변수를 사용할 때 성능 문제

  10. 10

    쓰레드 입문 : 쓰레드 매개 변수에서 std :: ref () 사용 문제

  11. 11

    본문에 매개 변수를 사용하여 Rails API POST 작업 문서화

  12. 12

    Python의 함수에서 입력 문을 매개 변수로 사용

  13. 13

    MySQL8 프로 시저-커서에서 매개 변수 사용

  14. 14

    mysql select 문에서 두 개의 PHP 변수 활용

  15. 15

    매개 변수가있는 문자열을 사용하여 mySQL에서 데이터를 가져 오는 방법은 무엇입니까?

  16. 16

    C #에서 문자열을 매개 변수로 사용하는 방법

  17. 17

    import 문에서 매개 변수를 어떻게 사용합니까?

  18. 18

    문자열 목록에서 정렬 및 키 매개 변수 사용

  19. 19

    AFNetworking에서 URL 매개 변수 및 JSON 본문을 사용한 POST

  20. 20

    준비된 명령문 매개 변수에서 테이블 컬럼 사용

  21. 21

    Android Java에서 문자열 매개 변수로 onclick 리스너 재사용

  22. 22

    if 문에서 공용 변수를 기반으로 SQL 매개 변수 변경

  23. 23

    Python을 사용하여 데이터를 MYSQL로 가져 오는 문제 (오류 코드 : "SQL 문에 모든 매개 변수가 사용되지 않음)

  24. 24

    문자열 매개 변수에 사용되는 Javascript * and * 연산자

  25. 25

    지시문에서 컨트롤러 함수 호출 (지시문에서 전달 된 매개 변수 사용)

  26. 26

    다른 매크로의 문자열 매개 변수 내에서 Freemarker 매크로 호출 사용

  27. 27

    PHP Mysql $ Id 문제는 매개 변수로 $ id 만 사용하여 데이터를 검색 할 수 없음

  28. 28

    MySQL보기에서 변수 나 매개 변수를 사용할 수 있습니까?

  29. 29

    경로에 문화 매개 변수를 사용하여 문화 변경

뜨겁다태그

보관