자바(Java)/JAVA 2SE

JDBC를 사용하여 데이터베이스와 연결하는 방법

본클라쓰 2009. 1. 12. 17:16

 

 JDBC는 응용 프로그램들이 DBMS에 연결하고 데이터를 검색할 수 있도록 해주는 자바 클래스 모임이다. JNDI 기술을 사용하여 데이터베이스의 종류에 따라 드라이버를 로딩하여 컨넥션을 생성한 후 SQL 문을 수행하게 해준다. 

 

 

JDBC를 사용하여 Connection 객체 얻는 순서

 

Connection 객체 생성 → Driver 생성 → Connection 객체에 Driver 객체를 삽입

 

 여기서 Connection 객체를 먼저 생성하나 Driver 객체를 먼저 생성하나 순서는 상관 없다. 다만, 중요한 것은 Connection 객체에 Driver 객체를 삽입하는 것이다. 

 

 

 

Connection 객체에 Driver 객체를 삽입하는 방법

Connection conn = null;

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

conn = DriverManager.getConnection("데이터베이스 주소", "사용자 ID", "사용자 password");

 

 

 

 

실제 Connection 객체를 얻는 코드 

   Connection conn = null; 

   String jdbc_url = "jdbc:mysql://localhost:3306/jspbeginner";
   String db_user = "user";
   String db_pass = "userpass";

   Class.forName("com.mysql.jdbc.Driver");
   conn=DriverManager.getConnection(jdbc_url, db_user, db_pass);

  

 

 

 

예제 코드

import java.sql.*;

 

abstract class LogonDBManager {
 Connection conn = null;


 /* 데이터 베이스 연결 (Connection객체 생성)메소드 */
 protected Connection getConnection() {  

   try{
       String jdbc_url = "jdbc:mysql://localhost:3306/jspbeginner";
       String db_user = "user";
       String db_pass = "userpass";

       Class.forName("com.mysql.jdbc.Driver");
       conn=DriverManager.getConnection(jdbc_url, db_user, db_pass);
  }catch(Exception e){
       System.err.println(e.getMessage());
  }
  return conn;           /* 연결이 되지 않을 경우 null값이 리턴됨 */
 }

 

 abstract void performQuery();            /* 세부 사항은 구현을 통해 사용 */
}

 

 

  

Select Query문을 구현하는 클래스

import java.sql.*;

 

public class SelectQuery extends LogonDBManager {        /* 최상위 클래스를 상속받아 구현 */
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
 
    public void SelectQuery(){};
 
    void performQuery() {                  /* 실제 Query문 구현*/
        try {
            conn = getConnection();          /* 팩토리 메소드 패턴 사용*/
   
            pstmt=conn.prepareStatement("select * from member");
            rs=pstmt.executeQuery();
   
            while(rs.next()){
                String id = rs.getString("id");
                String passwd = rs.getString("passwd");
                String name = rs.getString("name");
                Timestamp reg_date = rs.getTimestamp("reg_date");
                System.out.println(id+passwd+name+reg_date);
            }
   
        }catch(Exception e){
            System.err.println(e.getMessage());
        }finally{
            if(rs!= null) try {rs.close(); }catch(SQLException e){};
            if(pstmt!= null) try {pstmt.close(); }catch(SQLException e){};
            if(conn!=null) try {conn.close(); }catch(SQLException e){};
        }
    }
}

 

 

 

테스트 클래스(작동 여부를 테스트함)

public class Test {

    public static void main(String[] args) {


        LogonDBManager t = new SelectQuery();
        t.performQuery();
    }
}