JDBC

2020-02-25

위 문제는 JDBC에 관한 설명입니다.
Spring JDBC의 존재가 있어서 편리하게 사용할 수 있지만, JDBC의 동작 방법에 대해서 알고 있는 것이 문제해결에 좋습니다.


JDBC 개요

JDBC(Java Database Connectivity)의 정의

  • 자바를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약
  • 자바 프로그램 내에서 SQL문을 실행하기 위한 자바 API
  • SQL과 프로그래밍 언어의 통합 접근 중 한 형태

JAVA는 표준 인터페이스인 JDBC API를 제공
데이터베이스 벤더, 또는 기타 써드파티에서는 JDBC 인터페이스를 구현한 드라이버(driver)를 제공한다.

JDBC 환경 구성

1.JDK 설치

2.JDBC 드라이버 설치

  • 전에는 웹에서 사용할 때에는 JSTL 사용할 때, lib라는 디렉토리에다가 라이브러리 추가해주었습니다. 그러나 Maven을 이용하면 조금 더 편리하게 사용이 가능합니다. 다음과 같은 의존성을 추가합니다.
<dependency>   
  <groupId>mysql</groupId>   
       <artifactId>mysql-connector-java</artifactId>
       <version>8.0</version> // 해당버젼에 맞게
 </dependency>

DBC를 이용한 프로그래밍 방법

1.import java.sql.*;

2.드라이버를 로드 한다.

3.Connection 객체를 생성한다.(접속)

4.Statement 객체를 생성 및 질의 수행(Select문과 같은 쿼리문 생성 및 실행)

5.SQL문에 결과물이 있다면 ResultSet 객체를 생성한다.(Select처럼 결과가 있는 경우, DB에서 결과를 불러옴)

6.모든 객체를 닫는다.(객체를 닫는 것은 여태 왔던 순서의 역순으로 Close)

JDBC 클래스의 생성 관계

  1. DriverManager를 이용해서 Connection 인스턴스를 얻는다.

  2. Connection을 통해서 Statement를 얻는다.

  3. Statement를 이용해서 ResultSet을 얻는다.

  4. ResultSet객체 Close -> Statement객체 Close -> Connection객체 Close

JDBC 사용 - 단계별 설명

1. IMPORT

import java.sql.*;

2. 드라이버 로드

Class.forName( "com.mysql.jdbc.Driver" );
  1. Connection 얻기
    String dburl  = "jdbc:mysql://localhost/dbName";
    Connection con =  DriverManager.getConnection ( dburl, ID, PWD );
    
  2. Statement 생성
    Statement stmt = con.createStatement();
    
  3. 질의 수행
    ResultSet rs = stmt.executeQuery("select no from user" );
    참고
    stmt.execute(query);             //any SQL
    stmt.executeQuery(query);     //SELECT
    stmt.executeUpdate(query);   //INSERT, UPDATE, DELETE
    
  4. ResultSet으로 결과 받기
    ResultSet rs =  stmt.executeQuery( "select no from user" );
    while ( rs.next() )// 결과값이 존재한다면 받아옴
       System.out.println( rs.getInt( "no") );
    
  5. Close ```java rs.close();//ResultSet객체 Close

stmt.close();//Statement객체 Close

con.close();//Connection객체 Close ```