DB
Statement와 PreparedStatement
brilliant-growth
2024. 5. 30. 10:54
모르면 PreparedStatement을 사용하면 된다
- Statement와 PreparedStatement 공통 역할
- DB와 연결되어있는 connection 객체를 통해 SQL문을 DB에 전달하여 실행하고, 결과를 리턴받아주는 객체(인터페이스)
- 쿼리 문장 분석(parsing) → 컴파일(compile) → 실행(execute)
- Statement와 PreparedStatement 차이점
- 쿼리문 작성 방법사용자 입력을 직접 쿼리 문자열에 포함시켜 쿼리를 생성한다
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 공격에 안전하다