SQL 수행 메소드 - executeQuery(String sql), executeUpdate(String sql), execute(String sql)

CODEDRAGON Development/Java

반응형

 

 

 

SQL 수행 메소드

Statement는 문자열(String)형태의 SQL문을 사용합니다. 생성된 Statement객체가 데이터베이스에게 SQL문을 전송하는 방법은 SQL문에 따라서 3가지로 나눌 수 있습니다.

SELECT문의 경우에는 레코드셋(ResultSet)을 반환하고 INSERT UPDATE, DELETE문인 경우에는 처리된 레코드(row)의 개수를 반환하며 CREATE ALTER문인 경우에는 0을 반환합니다.

 

쿼리문 메소드 반환 값
SELECT executeQuery() ResultSet
INSERT
UPDATE
DELETE
executeUpdate() 처리된 레코드(row)의 개수
CREATE
ALTER
execute() 0

 

 

 

executeQuery(String sql)

ResulSet객체를 반환하는 SQL문이 경우에 사용합니다.

SQL문을 실행한 다음 레코드셋을 반환하는 경우를 의미하며 SELECT문인 경우에 사용합니다.

SQL문에 해당하는 레코드가 없는 경우에는 레코드 셋은 null을 갖습니다.

 

ResultSet 객체명 = Statement객체.executeQuery("SELECT ");

 

 

SQL문이 SELECT일 경우

Statement stmt = con.createStatement();
StringBuffer sb = new StringBuffer();
sb.append("select id from test ");
ResultSet rs = stmt.executeQuery(sb.toString());
 

 

 

 

executeUpdate(String sql)

·       데이터베이스에 변경을 주는 SQL문일 경우에 사용합니다.

·       INSERT UPDATE, DELETE, CREATE, DROP, ALTER등의 SQL문에 사용합니다.

·       executeUpdate()메소드의 반환값은 DML(Data Manipulation Language; 데이터 조작어) INSERT UPDATE, DELETE문인 경우에는 관련된(추가, 변경, 삭제) 레코드의 수를 반환하며, DDL(Data Definition Language; 데이터 정의어) CREATE DROP, ALTER문인 경우에는 0을 반환합니다.

 

SQL문이 INSERT, UPDATE, DELETE문 등일 경우

Statement stmt = con.createStatement();
StringBuffer sb = new StringBuffer();
sb.append("update test set id='the1001' ");
int updateCount = stmt.executeUpdate(sb.toString());
 

 

DELETE

Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl" , "codelab10" , "oracle_11g");
Statement stmt = con.createStatement();
StringBuffer sb = new StringBuffer();
sb.append("DELETE FROM member WHERE id='codedragon'");
int deleteCount = stmt.executeUpdate(sb.toString());
if(deleteCount==0)
System.out.println("삭제된 레코드가 없습니다.");
else
System.out.println(deleteCount +"개의 레코드가 삭제 되었습니다.");

 

 

 

execute(String sql)

SQL문이 여러 개의 ResultSet을 반환하거나 여러 개의 갱신된 레코드 개수(추가, 변경, 삭제된 레코드 수)를 반환하는 경우에 사용하는 메소드입니다.

ResultSet과 갱신된 레코드 개수를 함께 반환하는 SQL문인 경우에도 사용합니다.

 

Statement stmt = con.createStatement();
StringBuffer sb = new StringBuffer();
sb.append("update test set id='the5055'");
boolean isResult = stmt.execute(sb.toString());
if(isResult){
ResultSet rs = stmt.getResultSet();
while(rs.next()){
System.out.println("id : "+rs.getString(1));
}
}else{
int rowCount = stmt.getUpdateCount();
System.out.println("rowCount : "+rowCount);
}