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); } |
'Development > Java' 카테고리의 다른 글
| Thread(스레드; 쓰레드), 자바에서 스레드를 사용하는 이유 (0) | 2019.03.02 |
|---|---|
| JAVA - 실수 표현범위 (0) | 2019.02.26 |
| Runnable 인터페이스 활용 - 벽돌깨기 게임, 테트리스 게임 (0) | 2019.02.13 |
| 실수 표현 방법 - 고정 소수점 방식(fixed point), 부동 소수점 방식(floating point) (0) | 2019.02.07 |
| java.time 패키지 (0) | 2019.02.01 |