[자바(Java)] PrepareStatement

방용환·2023년 5월 15일
0
post-thumbnail

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 명령만 전달하여 실행 가능

0개의 댓글