티스토리 뷰

1. JDBC를 이한 DB 접근 3단계


1) 연결하기 -> Connection 생성


2) 질문하기 -> PreparedStatement 생성 후 executeQuery()하기


3) 답변받기 -> ResultSet 이용


개인적으로 생각하는 db 접근 방법이다. 



우선 JDBC를 이용한 DB접근을 하기위해서는 JDBC DRIVER가  필요하다. Oracle, MySQL, MsSQL 등 대부분의 디비에서 JDBC 드라이버를 제공해주기 때문에 알맞는 드라이버를 설치해서 Eclipse에 추가하도록 하자.



public class TestMain { public static void main(String[] args) { String serverURL = "jdbc:mysql://localhost:3306/sys"; // 주소:포트/db명 String id = "root"; // 계정명 String pw = "1234"; // 비밀번호 try { Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection(serverURL, id, pw); String sql = "insert into emp(empno, ename, age, deptno, mgr) values(1, '오라클', 22, 0423, 05)"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.executeUpdate(); } catch (ClassNotFoundException e) { System.out.println("드라이버가 존재하지 않습니다"); } catch (SQLException e) { e.printStackTrace(); } } }


위의 소스는 Mysql에 접속하기위한 커넥션 객체를 생성하고 Insert 문을 실행시키는 소스이다.  여기서 눈여겨 봐야할 부분은


커넥션 생성 부분, SQL 생성후 질의하는 부분 정도로 나눠볼수 있다.


Class.forName("com.mysql.jdbc.Driver");

임포트시킨 mysql connecter.jar 파일안에 있는 드라이버를클래스를 동적으로 생성후


Connection con = DriverManager.getConnection(serverURL, id, pw);


드라이버 매니저 객채를 통해 커넥션을 만든다. 이때 mysqlURL과, 계정, 비밀번호 정보를 파라메터로 넘겨준다.


String sql = "insert into emp(empno, ename, age, deptno, mgr) values(1, '오라클', 22, 0423, 05)";


그후 수행할 SQL문을 sql 변수에 입력 후


PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.executeUpdate();


PrepareStement 객체를 sql문을 넣어 객체를 생성한다.

pstmt.executeUpdate() 메소드를 실행시켜 sql문을 실행한다.




2. Statement


1) Statement 

 - Statement객체는 매개변수없는 간단한 SQL문을 질의할때 사용된다. SQL문을 실행하고 결과값을 받는데 필요한 기본적인 메소드를 제공한다.


2) PreparedStatement  (Statement 상속)

 - StatementStatement 객체는 IN 메개변수를 가지거나 가지지 않은 프리컴파일된 SQL문을 실행하는데 사용되고, IN 매개변수들을 다루기 위한 메소드들이 있다.


3) CallableStatement (PreparedStatement 상속)

 - 데이터베이스 저장 프로시저의 호출을 실행하는데 사용되며, out 매개변수들을 다루기 위한  메소드들이 있따.





3. 쿼리에 따른 실행 메소드


1) execute()

      : SQL문이 여러개의 ResultSet객체나 여러개의 갱신카운트 또는 ResultSet객체들과 갱신 카운트들의 결합을 리턴하는 것이 가능할때 사용한다.


2) executeQuery()

     - 하나의 ResultSet을 만드는 SQL문에서 사용(executeQyery 메소드는 ResultSet 객체를 리턴한다.)

     - 주로 SELECT문을 이용하는 조회에서 사용됨.


3) executeUpdate()

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

 


실행문을 위한 모든 메소드들은 하나가 오픈되어있다면, 호출된 Statement 객체의 현재 ResultSet을 닫아야한다.

이것은 Statement 객체를 다시 실행기전에 현재 ResultSet 객체의 어떠한 처리도 완결해야 할 필요가 있다는 것을 의미한다.