모르면 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 공격에 안전하다
'DB' 카테고리의 다른 글
외래키에 관하여 (0) | 2024.11.29 |
---|---|
수정 삭제가 잦은 컬럼에 index가 적합하지 않은 이유 (0) | 2024.05.30 |
index를 사용하지 못하는 경우 (0) | 2024.05.30 |
검색기능을 text index로 사용해보자 (0) | 2024.05.29 |
Transaction이란? (1) | 2023.11.24 |