[Java] execute, executeQuery, executeUpdate

chael_lo·2021년 6월 23일
0

Java

목록 보기
45/52

Statement 인터페이스의 SQL문들을 실행하기 위한 메소드들이다.

execute

SQL문이 여러개의 ResultSet객체나 여러개의 갱신 카운트 또는 ResultSet객체들과 갱신 카운트들의 결합을 리턴하는 것이 가능할 때 사용한다.
Select, Insert, Update, Delete, DDL 문을 모두 실행할 수 있다.

반환값: boolean(true, false)

true이면 getResultSet 메서드를 사용하면서 결과 집합을 얻을 수 있다.
false이면 업데이트 개수 또는 결과가 없는 경우다.

executeQuery

하나의 ResultSet을 만드는 SQL문에서 사용한다.
주로 SELECT문을 이용하는 조회에서 사용한다.

반환값: ResultSet

데이터베이스에서 데이터를 가져와서 ResultSet을 반환한다.
ResultSet은 결과 집합으로 검색결과를 테이블(2차원 배열) 형식으로 저장한 인스턴스다.
ResultSet의 결과를 한번에 가져올 수 없기 때문에 커서(Cursor)라는 개념을 제공한다.
커서는 ResultSet 객체가 가져올 수 있는 행의 위치를 지정해준다.
처음 커서의 위치는 결과물에 위치하지 않기 때문에 이동해주어야 한다.
(처음 커서의 위치는 BOF(Before Of File)에 위치한다.)

ResultSet.next()
ResultSet 커서를 다음행으로 이동하는 메소드이며,
반환값은 boolean이다.
true면 ResultSet 커서 위치의 처리행이 있는 경우의 반환값
false이면 ResultSet 커서 위치의 처리행이 없는 경우의 반환값 - EOF(End Of File)

ResultSet.getXXX(int columnIndex), ResultSet.getXXX(String columnLabel)
ResultSet 커서 위치의 처리행에 컬럼값을 반환하는 메소드다.
XXX는 컬럼값을 반환받기 위한 Java 자료형을 표현한다.
ResultSet 커서 위치의 처리행에 컬럼값은 오라클 자료형에 상관없이
getString() 메소드를 호출하여 문자열(String 인스턴스)로 반환이 가능하다.
columnIndex: 검색대상에 대한 컬럼 위치값(Index : 1부터 1씩 증가되는 정수값)
columnLabel: 검색대상에 대한 컬럼명 또는 별칭(ColumnAlias)

ResultSet rs;
String sql="select * from student order by no";
rs=stmt.executeQuery(sql);

if(rs.next()) {
//반복문을 이용하여 ResultSet 커서를 다음행으로 이동하여 행을 하나씩 처리
// => ResultSet 커서 위치의 처리행이 없는 경우 반복문 종료
	do {
            int no=rs.getInt("no");
            System.out.println("학번 = "+no);
        } while(rs.next());
}

executeUpdate

INSERT, UPDATE, DELETE 등 (DML), CREATE, DROP 등(DDL)문들을 실행하는데 사용한다.

반환값: int

해당 SQL문 실행에 영향을 받는 행 수를 반환한다.

//student 테이블에서 no가 2000인 행의 name을 임걱정으로 변경하는 SQL문 실행
String sql="update student set name='임걱정' where no=2000";
int rows=stmt.executeUpdate(sql);
//row라는 변수에 SQL문의 영향을 받는 행 수를 반환받아 메세지 출력
System.out.println("[메세지]"+rows+"명의 학생정보를 변경 하였습니다.");
profile
천천히 꾸준히

0개의 댓글