Execute, ExecuteQuery, ExecuteUpdate
반환값 | 구문 | |
Execute | Boolean 타입(true / false)의 값 | 모든 구문 |
ExecuteQuery | ResultSet 객체의 값 | SELECT 구문 |
ExecuteUpdate | int 타입의 값 | SELECT 구문 제외한 다른 구문 |
Execute
- 수행 결과로 Boolean 타입의 값을 반환한다.
- 리턴값이 ResultSet인 경우 true, 이외의 것인 경우 false를 반환한다.
- 리턴값이 ResultSet이어도 ResultSet 객체에 결과값을 담을 수는 없다.
- 모든 구문에서 수행이 가능하다.
//4-1. execute
boolean b = stmt.execute(sql);
System.out.println("b: "+b);
//반환값이 ResultSet객체이므로 true를 출력한다.
ExecuteQuery
- 수행 결과로 ResultSet 객체의 값을 반환한다.
- SELECT 구문을 수행할 때 사용하는 함수이다.
//5. ResultSet객체 얻어오기(executeQuery)
ResultSet rs = stmt.executeQuery(sql.toString());
ExecuteUpdate
- 수행 결과로 int 타입의 값을 반환한다.
- SELECT 구문을 제외한 다른 구문을 수행할 때 사용하는 함수이다.
- INSERT / DELETE / UPDATE 관련 구문에서는 반영된 레코드의 건수를 반환한다.
- CREATE / DROP 관련 구문에서는 -1을 반환한다.
출처: https://mozi.tistory.com/26
[JAVA] Execute, ExecuteQuery, ExecuteUpdate 차이점 알아보기
Execute 1. 수행결과로 Boolean 타입의 값을 반환합니다.2. 모든 구문을 수행할 수 있습니다. execute 함수를 사용하는 방법입니다. -> 리턴값이 ResultSet 일 경우에는 true, 이 외의 경우에는 false 로 출력됩
mozi.tistory.com
예제1 - Execute, ExecuteQuery (SELECT 구문)
package day01;
import java.sql.*;
public class ExamDriverLoad {
public static void main(String[] args) {
try{
//1. driver 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("클래스 로딩 성공!");
//2. DB 연동을 위한 커넥션
String user = "scott";
String password = "tiger";
String url = "jdbc:oracle:thin:@localhost:1521:XE";
Connection con = DriverManager.getConnection(url, user, password);
System.out.println("데이터베이스 접속 성공!");
//3. SQL문 작성
String sql = "SELECT empno, ename, job, hiredate, sal, deptno "
+ "FROM emp WHERE JOB = 'MANAGER'";
System.out.println(sql);
System.out.println("-------------------------------------------------------");
//4. Statement객체 얻어오기
Statement stmt= con.createStatement();
//4-1. Execute
boolean b = stmt.execute(sql);
System.out.println("b: "+b);
//반환값이 ResultSet객체이므로 true를 출력한다.
//5. ResultSet객체 얻어오기(ExecuteQuery)
ResultSet rs = stmt.executeQuery(sql.toString());
//6. ResultSet객체 순회
while(rs.next()) {
int empno = rs.getInt(1);
String ename = rs.getString("ENAME");
String job = rs.getString(3);
java.sql.Date hiredate = rs.getDate(4);
int sal = rs.getInt("SAL");
int deptno = rs.getInt(6);
System.out.printf("%d\t%s\t%s\t%s\t%d\t%d\n",
empno, ename, job, hiredate.toString(), sal, deptno);
}
//7. DB 연결자원 반납
if(rs!=null) rs.close();
if(stmt!=null) stmt.close();
if(con!=null) con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
예제2 - Execute, ExecuteUpdate (UPDATE 구문)
package day03;
import java.sql.*;
import java.util.Scanner;
/*
* Statement를 이용하여
* java_member테이블의 회원정보를 수정해봅시다
* */
public class StatementTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("수정할 회원의 ID 입력: ");
String id = sc.nextLine();
System.out.println("수정할 회원의 Name 입력: ");
String name = sc.nextLine();
System.out.println("수정할 회원의 Tel 입력: ");
String tel = sc.nextLine();
System.out.println("수정할 회원의 PW 입력: ");
String pw = sc.nextLine();
System.out.println(id+"/"+name+"/"+tel+"/"+pw);
try {
//1. driver 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("driver 클래스 로딩 성공!");
//2. db 연동
String user = "scott", password = "tiger";
String url = "jdbc:oracle:thin:@localhost:1521:XE";
Connection con = DriverManager.getConnection(url, user, password);
System.out.println("db연동 성공!");
//3. SQL문 작성
String sql = "UPDATE java_member SET name='" + name + "', tel='"
+ tel + "', pw=" + pw + " WHERE id = '" + id + "'";
System.out.println(sql);
//4. Statement 객체 얻기
Statement stmt = con.createStatement();
//5. execute 쿼리 실행
boolean b = stmt.execute(sql);
System.out.println("b: " + b);
//ResultSet 객체가 아니므로 false 반환
//6. executeUpdate 쿼리 실행
int re = stmt.executeUpdate(sql);
System.out.println(re + "개 레코드 수정 완료!");
//7.db자원 반납
stmt.close();
con.close();
} catch(ClassNotFoundException e){
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
}
}
}