복붙노트

[SQL] 물음표는 SQL 쿼리에 무엇을 상징 하는가? [복제]

SQL

물음표는 SQL 쿼리에 무엇을 상징 하는가? [복제]

일부 SQL 책을 통해가는 동안 나는 그 예는 자신의 쿼리에서 물음표 (?)를 사용하는 경향이 발견했다. 그것은 무엇을 상징 하는가?

해결법

  1. ==============================

    1.당신이보고있는 것은 매개 변수가있는 쿼리입니다. 프로그램에서 동적 SQL을 실행할 때 그들은 자주 사용된다.

    당신이보고있는 것은 매개 변수가있는 쿼리입니다. 프로그램에서 동적 SQL을 실행할 때 그들은 자주 사용된다.

    대신이 (: 의사 참고) 작성의 예를 들면 :

    ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = 7")
    result = cmd.Execute()
    

    이 쓰기 :

    ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = ?")
    cmd.Parameters.Add(7)
    result = cmd.Execute()
    

    아마 분명 이것은 많은 장점이 있습니다. 가장 중요한 중 하나 : 당신의 매개 변수는 영리하고, 문자열이 제대로 됐는지 확인 구문 분석 라이브러리 기능을합니다. 예를 들어, 당신은이를 작성하는 경우 :

    string s = getStudentName()
    cmd.CommandText = "SELECT * FROM students WHERE (name = '" + s + "')"
    cmd.Execute()
    

    사용자가이를 입력하면 어떻게됩니까?

    Robert'); DROP TABLE students; --
    

    (답은 여기에있다)

    대신 쓰기 :

    s = getStudentName()
    cmd.CommandText = "SELECT * FROM students WHERE name = ?"
    cmd.Parameters.Add(s)
    cmd.Execute()
    

    그런 도서관이 생산, 입력을 살균합니다 :

    "SELECT * FROM students where name = 'Robert''); DROP TABLE students; --'"
    

    모든 DBMS의 사용?. MS SQL 내가 큰 개선을 고려 명명 된 매개 변수를 사용합니다 :

    cmd.Text = "SELECT thingA FROM tableA WHERE thingB = @varname"
    cmd.Parameters.AddWithValue("@varname", 7)
    result = cmd.Execute()
    
  2. ==============================

    2.? SQL 주입을 방지하기 위해 쿼리를 실행하는 프로그램에 의해 충전 될 수있는 이름 파라미터이다.

    ? SQL 주입을 방지하기 위해 쿼리를 실행하는 프로그램에 의해 충전 될 수있는 이름 파라미터이다.

  3. ==============================

    3.? 매개 변수가있는 쿼리를 허용하는 것입니다. 를 교체 할 때이 매개 변수가있는 쿼리는 유형 특정 값을 허용하는 것입니다? 각각의 값.

    ? 매개 변수가있는 쿼리를 허용하는 것입니다. 를 교체 할 때이 매개 변수가있는 쿼리는 유형 특정 값을 허용하는 것입니다? 각각의 값.

    그것을 전부 그.

    여기가 매개 변수화 된 쿼리를 사용하는 것이 좋습니다 이유의 이유가있다. 기본적으로, 읽고 디버깅하기 쉽다.

  4. ==============================

    4.이 매개 변수입니다. 쿼리를 실행할 때 당신은 그것을 지정할 수 있습니다.

    이 매개 변수입니다. 쿼리를 실행할 때 당신은 그것을 지정할 수 있습니다.

  5. ==============================

    5.나는 SQL에서 어떤 의미를 가지고 있다고 생각하지 않습니다. 당신은 JDBC 또는 무언가에 문 준비보고 될 수 있습니다. 이 경우, 물음표는 문에 매개 변수에 대한 자리입니다.

    나는 SQL에서 어떤 의미를 가지고 있다고 생각하지 않습니다. 당신은 JDBC 또는 무언가에 문 준비보고 될 수 있습니다. 이 경우, 물음표는 문에 매개 변수에 대한 자리입니다.

  6. ==============================

    6.그것은 일반적으로 클라이언트가 제공 할 수있는 매개 변수를 나타냅니다.

    그것은 일반적으로 클라이언트가 제공 할 수있는 매개 변수를 나타냅니다.

  7. from https://stackoverflow.com/questions/3727688/what-does-a-question-mark-represent-in-sql-queries by cc-by-sa and MIT license