본문 바로가기
DB

Statement와 PreparedStatement

by brilliant-growth 2024. 5. 30.

모르면 PreparedStatement을 사용하면 된다

  • Statement와 PreparedStatement 공통 역할
    1. DB와 연결되어있는 connection 객체를 통해 SQL문을 DB에 전달하여 실행하고, 결과를 리턴받아주는 객체(인터페이스)
    2. 쿼리 문장 분석(parsing) → 컴파일(compile) → 실행(execute)
  • Statement와 PreparedStatement 차이점
    1. 쿼리문 작성 방법사용자 입력을 직접 쿼리 문자열에 포함시켜 쿼리를 생성한다

Statement #
사용자 입력을 직접 쿼리 문자열에 포함시켜 쿼리를 생성한다

String sqldb = "SELECT name, age FROM table WHERE userID = " + userID

 

 PreparedStatement $

쿼리의 미리 정의된 위치(매개변수)에 값을 할당하여 쿼리를 생성한다

String sqldb = "SELECT name, age FROM table WHERE userID = ? "

 

 

SQL Injection 발생 여부사용자가 악의적인 값을 입력하면 SQL Injection이 발생 할 수 있다

Statement

사용자가 악의적인 값을 입력하면 SQL Injection이 발생 할 수 있다

 

PreparedStatement

매개변수를 통해 값을 전달하기 때문에 사용자 입력이 직접 쿼리에 삽입되지 않아 SQL Injection 공격에 안전하다