[출처] execute / executeQuery / executeUpdate 차이|작성자 똥광이
Statement
1. 개요
- Statement 객체는 SQL문을 데이터베이스로 전송하는데 사용한다.
- 실제로 다음과 같은 3종류의 Statement 객체들이 있고 모두 주어진 접속상에서 SQL 문들을 실행하기 위해 컨테이너들로써 동작한다.
① Statement
: Statement 객체는 매개변수 없는 간단한 SQL문을 실행하는데 사용되며,
Statement 인터페이스는 SQL문들을 실행하고 결과들을 검색하기 위한 기본적인 메소드들이 있다.
② PreparedStatement(Statement로 부터 상속받음)
: PreparedStatement 객체는 IN 매개변수를 가지거나 가지지 않는 프리컴파일된 SQL문을 실행하는데 사용되고,
PreparedStatement 인터페이스는 IN 매개변수들을 다루기 위한 메소드들이 있다.
③ CallableStatement(PreparedStatement로부터 상속받음)
: CallableStatement 객체는 데이터베이스 저장 프로시져(Stored Procedure)의 호출을 실행하는데 사용되며,
CallableStatement 인터페이스에는 OUT 매개변수들을 다루기 위한 메소드들이 있다.
이러한 것들은 특정 형태의 SQL문들을 전송하기 위해 분화되어졌다.
2. Statement 객체 생성
- 특정 데이터베이스에 연결되면, 그 접속은 SQL문들을 전송하는데 사용된다.
- Statement 객체는 아래의 코드처럼 Connection의 createStatement 메소드로 생성되어진다.
☞ Connection conn = DriverManager.getConnection(URL, USER, PWD); // URL:DB 접속 드라이버 url, USER:DB접속 ID, PWD:비밀번호
☞ Statement stmt = conn.createStatement();
- 데이터베이스로 전송되어질 SQL문은 Statement 객체를 실행하기 위한 메소드들의 인자로서 공급되어진다.
☞ ResultSet rs = stmt.executeQuery("SELECT * FROM table");
3. Statement 객체 수행
- Statement 인터페이스는 SQL문들을 실행하기위한 3가지 다른 메소드(execute, executeQuery, executeUpdate)들을 제공한다
- SQL문이 무엇을 만드는지에 따라 사용하는 메소드가 나뉜다.
① executeQuery 메소드
: 하나의 ResultSet을 만드는 SQL문에서 사용(executeQyery 메소드는 ResultSet 객체를 리턴한다.)
: 주로 SELECT문을 이용하는 조회에서 사용됨.
② executeUpdate 메소드
: INSERT, UPDATE, DELETE 등 (DML), CREATE, DROP 등(DDL)문들을 실행하는데 사용
└ DML을 사용할 경우 리턴값 : 작용한 열의 개수(갱신 카운트로 간주되는)를 나타내는 정수
└ DDL을 사용할 경우 리턴값 : 0을 리턴(DML을 실행 후 아무런 영향을 주지 않은 경우에도 '0'을 리턴한다.)
※ 실행문을 위한 모든 메소드들은 하나가 오픈되어있다면, 호출된 Statement 객체의 현재 ResultSet을 닫아야한다.
이것은 Statement 객체를 다시 실행기전에 현재 ResultSet 객체의 어떠한 처리도 완결해야 할 필요가 있다는 것을 의미한다.
③ execute 메소드
: SQL문이 여러개의 ResultSet객체나 여러개의 갱신카운트 또는 ResultSet객체들과 갱신 카운트들의 결합을 리턴하는 것이 가능할때 사용한다.
'생존기술_IT > JAVA' 카테고리의 다른 글
[JAVA] 루프로 돌려서 GET,POST로 들어온 파라메터들 나열하기.. (0) | 2020.10.04 |
---|---|
[JSP/PHP] JSP vs PHP 서버변수 모음 (0) | 2020.10.04 |
[JAVA] request.getServerName() + @ - get서버관련info (0) | 2020.10.04 |
[JAVA] TIMESTAMP (0) | 2020.10.03 |
[JAVA] jsp:include 와 <%@ include%> (0) | 2020.09.21 |