1. Statement 객체
Statement 객체
- Statement 객체 : 현재 접속중인 DBMS 서버에 SQL 명령을 전달하여 실행하기 위한 기능을 제공하는 객체
- 하나의 Statement 객체를 사용하여 다수의 SQL 명령을 전달하여 실행 가능
String sql1 = "insert into student values(" + no + ",'" +
name + "','" + phone + "','" + address + "','" + birthday + "')";
- SQL 명령에 Java 변수값을 포함할 경우 위와 같이 문자열 결합 기능을 사용 (단점)
=> 문자열 결합을 이용할 경우 가독성 및 유지보수의 효율성 감소
=> InSQL 해킹 기술에 취약
2. PrepareStatement 객체
1. PrepareStatement 객체
- Connection.prepareStatement(String sql) : Connection 객체로부터 SQL 명령이 저장된 PreparedStatement 객체를 반환하는 메소드
String sql = "insert intro student values(?,?,?,?,?)";
- InParameter : Java 변수값을 제공받아 SQL 명령의 문자값으로 표현하기 위한 기호
=> 반드시 InParameter에 Java 변수값을 전달받아 완전한 SQL 명령 완성
- PraparedStatement.setXXX(int parameterIndex, XXX value) : PreparedStatement 객체에 저장된 SQL 명령의 InParameter에 Java 변수값을 전달하는 메소드
- PreparedStatement.executeUpdate() : PreparedStatement 객체에 저장된 DML 명령을 전달하여 실행하고 조작행의 개수를 정수값으로 반환하는 메소드
2. 장단점
- 장점 : InParameter를 사용하여 SQL 명령에 Java 변수값을 문자값으로 포함하여 사용 가능
=> InParameter를 사용하여 가독성이 향상되고 유지보수의 효율성 증가
=> InSQL 해킹 기술을 무효화 처리
- 단점 : 하나의 PreParedStatement는 저장된 하나의 SQL 명령만 전달하여 실행 가능