JDBC란?

  • 자바를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약이다.
  • 자바는 표준 인터페이스인 JDBC API를 제공하고 있다. 즉, 인터페이스를 제공하고 있다
    자바에서 DBMS로 접근하는 방식이 DBMS마다 다르다면 공부하기 힘들 것이다.
    그래서 어떤 DBMS를 사용하더라도 똑같은 방식으로 다룰 수 있도록 한다.

JDBC 사용 - 단계별 정리

  • 1단계 : import.sql.*;
    • 알다시피 다른 패키지에 있는 클래스를 사용하기 위해서는 반드시 임포트를 해와야 한다.
    • java.sql패키지 안에 Connection, ResultSet등 인터페이스가 들어있다.

  • 2단계 : 드라이버를 로드한다.
    • 자바에서 제공하는 JDBC API의 인터페이스들을 구현한것은 각각의 벤더들이 제공하는 드라이버에 있다.
    • JDBC는 인터페이스를 제공하고 인터페이스들은 벤더를 만든 회사에서 구현하는 것이다.
    • 드라이버를 로드하기 전 먼저 드라이버를 다운받아야 한다.
    • JDBC를 설치해보자를 참고하자.
    • 아래 코드는 다운받은 후 드라이버를 로드하는 방법 중 하나다.
        Class.forName("com.mysql.jdbc.Driver");
      
    • Class 클래스의 forName 메소드를 이용하면 만들어진 객체가 메모리에 올라간다.
    • new를 사용해서 객체를 생성하는 것과 비슷한 기능을 하는 메소드다.
    • 어떤 데이터베이스 벤더를 이용하느냐에 따라서 괄호 안의 값이 달라진다.

  • 3단계 : Connection 객체를 생성한다.
      String uri = "jdbc:mysql://localhost:3306/DB이름?"; // DB_URL
              uri += "useSSL=false&"; // 인증방식설정
              uri += "serverTimezone=Asia/Seoul&"; // 서버시간설정
              uri += "useUnicode=true&"; // 유니코드사용여부설정
              uri += "characterEncoding=UTF-8";
    			
              String uid = "root";
              String upw = "1234";
    			
              Connection conn = DriverManager.getConnection(uri, uid, upw);
    
    • Connection 객체를 얻어낼 때 사용하는 것이 DriverManager객체이다.

  • 4단계 : Statement 객체를 생성 및 수행
    • 쿼리문을 생성하고 실행하는 역할을 하는 객체다.
    • 메서드는 insert,select등의 쿼리문에 따라 다르다.
      Statement stmt = conn.createStatement();
    
      String sql = "select * from memberinfo";
      ResultSet res = stmt.executeQuery(sql);
    
      res = stmt.excuteQuery();
      stmt.execute("query");
      stmt.excuteQuery("query");
      stmt.executeUpdate("query");
    



  • 5단계 : SQL문에 결과물이 있다면 ResultSet 객체를 생성한다.
      String sql = "select * from memberinfo";
      ResultSet res = stmt.executeQuery(sql);
    
    • 현재 ResultSet은 데이터베이스쪽에 있고 데이터베이스의 ResultSet에서 res를 얻어온 것이다.
    • 이 객체로 stmt.executeQuery(sql);를 실행했다.



  • 6단계 : 모든 객체를 닫는다.
    • 연결을 했다면 항상 접속을 끊어야한다. 열었던 반대 순서로 닫아준다.

  • 만약 쿼리를 실행했는데 결과가 엄청나게 많다면 한꺼번에 다 가져오면 문제가 발생한다.
    • while문을 사용해서 하나씩 가져온다.
        while(res.next()){
        System.out.println(res.getInt("no"));
        }
      

Leave a comment