티스토리 뷰

휴지통/Java

JDBC

LeReve 2013. 5. 14. 17:11

<JDBC> Java DataBase Connectivity
- java.sql 패키지사용

관련클래스) 1 클래스 2-5 인터페이스
  1. DriverManger
     - JVM에서 JDBC전체를 관리하는 class
        (Driver등록, Connection연결작업)
  2. Driver
     - DB를 만드는 Vendor(Oracle, MS-SQL, MySQL...)를
        implements하여 자신들의 DB를 연결할 수 있는 class를 만드는 interface.
  3. Connection                                                                                     
     - DB와 연결성을 가지고 있는 interface.                                                
  4. Statement                                                                                      

     - 실제 SQL문을 사용하기 위하여 Connection으로 부터 받아내는 interface.

  5. ResultSet            
     - Statement를 통하여 select문을 실행하였을 때     
        그 결과 Data를 가지고 있는 interface.         

   

<JDBC Programming>
1. Driver loading
2. DB와 연결하여 Connection 객체얻기
3. Connection으로 부터 Statement 객체얻기
4. Statement의 API를 이용하여 SQL실행
5. SQL을 실행한 후 결과인 ResultSet객체 얻기
6. ResultSet에 있는 결과 자료를 loop를 이용하여 처리.


1. 드라이버로딩 Driver loading
   (제품군 선택 - 어떠한 RDBMS를 사용할지)
 -Oracle경우
 Class.forName("oracle.jdbc.driver.OracleDriver");
 
 -MySQL경우
 Class.forName("org.gjt.mm.mysql.Driver");
 
 -MS-SQL경우
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 
2. 연결객체생성
 Connection conn = DriverManager.getConnection(ip,port,sid,user,pass);
 
3. Statement 객체 생성
 - SQL문을 실행할 메소드가 포함되어 있음.
 
 Statement stmt = conn.createStatement();
 
 실행메소드)
  stmt.executeUpdate("DML문");
  stmt.executeQuery("DQL문");

 

4. ResultSet 객체생성
   결과 집합

 

ResultSet rs = stmt.executeQuery("DQL문");

 

ResultSet: 결과집합이 저장됨(행열데이터)
rs.next(): 결과집합에서 한 행을 얻어옴. (리턴값 true|false)
rs.get자료형(컬럼명 또는 컬럼인덱스): next를 통해 얻어온 행에서 열데이터를 얻는 역할.
        String
         int
        date

 

===================================================================================

 

Statement (java.sql.Statement)

   Statement에서는 executeQuery(),excecuteUpdate()메소드를 실행하는
   시점에 파라미터로 SQL문을 DB에 전달한다.
  
   장점 : 사용돈 SQL문 전체를 명확히 알 수 가 있어서 디버깅이 쉽다.
   단점 : 조건값이 틀린 많은 수의 SQL문을 반복 실행하게 되는 경우, DB서버에서 모두 새롭게 PARSING

            되어야 하므로 부하가 생길수 있다.

-------------------------------------------------------------------
PreparedStatement(java.sql.PreparedStatement)

  PerparedStatement는 커넥션에서 생성하면서 SQL문이 DB에 전송되어진다.
  Statement클래스를 상속하고 있음

  장점
   - bind변수를 사용하여 DB서버에서 파싱된 SQL을 재사용하게 만듦으로, 반복적인 다량의 SQL수행시

     성능상 이득이 있다.
   - 반복 루프를 통해서 하나의 SQL문에 변수값만 입력하며 반복 실행 할 수 있음.
   - SQL injection예방의 방법이 될 수 있다.

  단점
   - 오류발생 시, 변수에 입력되는 값을 알 수 없어서 디버깅이 어렵다.
   - bind변수에 어떤값이 들어올지 알 수 없으므로, DB서버에서 비효율적인 exception plan이 선택될 수

     있다.

'휴지통 > Java' 카테고리의 다른 글

자바  (0) 2013.05.27
자바 기초  (0) 2013.05.27
Client Test  (0) 2013.03.11
Client  (0) 2013.03.11
Server Test  (0) 2013.03.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함