포스팅에 앞서 이 글은 MySQL을 기준으로 포스팅했으며, cdspacenoob님의 포스팅을 참조했습니다.
JDBC는 Java에서 Database를 사용할 수 있게 해주는 API로 JDBC : Java DataBase Connectivity
의 약자이다.
Database 종류와 상관없이 사용할 수 있다.
JDBC를 사용하기 위해서는 JDBC 드라이버를 설치해야한다.
JDBC 드라이버는 각 DB에 맞는 것을 찾아 설치하면 된다.
Class.forName(DB에 맞는 Driver)
를 사용해 로딩한다.JDBC의 동작 순서는 아래 순서대로 작동한다.
DB Driver를 Java 메모리 상으로 load : Class.forName(driver)
Driver를 통해 Java와 DB를 연결(connection)한다.
con = DriverManager.getConnection(url, Id, password)
연결이 됐다면, statement 또는 preparedstatement로 쿼리문을 전송한다.
stmt = con.createStatement()
pstmt = con.prepareStatement()
쿼리 작성 String
으로 선언하고, 변수에 입력
String sql = "SELECT * FROM book"
작성한 쿼리 전송
res = stmt.executeQuery(sql)
쿼리문이 SELECT면 ResultSet
으로 받고, 그 외에는 int
로 받는다. (반환 타입)
쿼리를 다 사용했다면, ResultSet
부터 역순으로 리소스 close()
를 진행한다.
가장 먼저 JDBC Driver인 Connector를 설치해야한다.
일반적으로 구글에 MySQL JDBC라고 검색하면 바로 나온다.
굳이 설치하지 않고 Platform Independent
를 선택해 zip파일로 다운받았다.
압출을 풀고 나오는 .jar
파일을 이클립스에 연결시켜준다.
순서가 좀 많이 길다
프로젝트 우클릭
>> properties
>> Java Build Path
>> 상단에 Libraries 선택
>> Add Library
User Library
>> User Libraries
>> New
>> 이름 입력(jdbc로 설정)
1, 2, 3 순서대로 따라가면 된다. 나는 이미 만들어 놓은 jdbc 라이브러리가 있기 때문에 아래에 경고가 표시됨
jdbc 선택
>> Add External JARs...
>> 다운받은 connector 파일 선택
Apply and Close
>> Finish
위 사진과 같이 나온다면 성공적으로 마무리됨
위 과정은 Java와 SQL을 연결하기 위해 준비단계이고, 이제 코드를 통해 직접 연결할 차례이다.
위에서 동작 순서를 설명했던 과정 중 DB Driver를 Java 메모리 상으로 로드하고, JAVA와 DB를 연결하는 과정까지 진행한다.
위의 일련의 과정을 통해 Import한 Driver 파일을 객체화하는 과정이다.
이를 통해 DriverManager
클래스를 사용할 수 있다.
Class.forName(driver)
와 같이 사용한다.String driver = "com.mysql.cj.jdbc.Driver";
...
Class.forName(driver);
driver 변수를 String 타입으로 선언하고 호출할 때, 매개변수로 입력한다.
load를 한 이후 Java와 DB를 연결한다.
위 세 가지를 사용해 연결한다.
con = DriverManager.getConnection(url, Id, password)
와 같이 사용Connection이 완료되면 statement
또는 preparedstatement
클래스를 사용할 수 있다.
String url = "jdbc:mysql://localhost:3306/MySQL?serverTimezone=UTC";
String id = "root";
String pwd = "1234";
...
con = DriverManager.getConnection(url, id, pwd);
위 load 과정과 동일하게 각 요소들을 미리 변수로 선언하고, 클래스 메서드를 호출할 때 매개변수로 입력한다.
위 코드 설명은 아주 간략하게 한 것이고 전체 코드를 보자
package test
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionManager {
public static Connection getConnection() {
Connection con = null;
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test"; // jdbc는 DB 이름
String id = "root";
String pwd = "1234";
try {
Class.forName(driver);
try {
con = DriverManager.getConnection(url, id, pwd);
System.out.println("Connected...");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("Connection Failed!");
e.printStackTrace(); // 예외 발생시 내용 출력
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("Connection Failed. Check Driver or URL");
e.printStackTrace(); // 예외 발생시 내용 출력
}
return con;
}//getConnection()
}
코드를 보면 어렵게 느껴질 수도 있지만 굉장히 단순하다.
순서만 지켜서 load -> connection 순으로 진행하면 되는 것으로 굉장히 심플하다.
이제 완성했으니 Main 클래스를 생성해 실행해보자
Main 클래스
package test;
public class main {
public static void main(String[] args) {
// TODO Auto-generated method stub
ConnectionManager.getConnection();
}
}
성공적으로 연결된 것을 확인할 수 있다.
위 과정을 모두 완료했다면 JAVA와 DB가 Connection을 통해 서로 정보를 주고 받을 준비가 완료되었다.