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();
		}
	}

}

실행 결과
실행 전
실행 후

 

+ Recent posts