[Database] JDBC Intro

게맛살맛게·2021년 12월 20일
0

DB

목록 보기
14/23

JDBC

Java 프로그램에서 DB 서버접속하여 데이터를 처리하는 기능을 구현하고자 할 때 사용되는 기술

JDBC 기술의 구성

  • JDBC API(java.sql, javax.sql) ➡ 공통적 (모든 DB 서버에 대해)
    Connection Statement PreparedStatement ResultSet DatabaseMetaData ResultSetMetaData
    DriverManager Date Time Timestamp
  • JDBC Driver ➡ DB 서버마다 달라짐

DB 연결

import java.sql.Connection;
import java.sql.DriverManager;

public class ConnectDB {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            // JDBC URL : jdbc:DBMS이름://[Hostname][:Port]/DB이름[?param1=value1][&param2=value2]...
            String url = "jdbc:mysql://localhost:3306/sqldb?characterEncoding=UTF-8&serverTimezone=UTC";
            String user = "root";
            String passwd = "";
            Connection conn = DriverManager.getConnection(url, user, passwd);
            conn.close();
            System.out.println("MySQL연결 성공");
        } catch (Exception e) {
            System.out.println("MySQL 연결 실패");
            System.out.println("사유" + e.getMessage());
        }
    }
}

데이터 읽기

Driver 로드

DriverManager로 어떤 DB를 사용할 것인지 드라이버를 로드

Class.forName("com.mysql.cj.jdbc.Driver"); // 각 DB마다 고유의 드라이버 이름이 있음

Connection 얻기

DB를 결정 후, 연결을 위해 연결 정보를 입력

String url = "jdbc:mysql://localhost:3306/sqldb?characterEncoding=UTF-8&serverTimezone=UTC";
String user = "root";
String passwd = "p@ssw0rd";
Connection conn = DriverManager.getConnection(url, user, passwd);

Statement 작성

DB 서버에 SQL 명령을 전달하야 실행시키기 위한 객체를 생성

Statement stmt = conn.createStatement();

SELECT 명령을 실행하고 결과를 ResultSet에 담기

SELECT 명령을 실행한 결과는 JDBC 드라이버가 ResultSet이라는 객체로 반환

ResultSet rs = stmt.excuteQuery("SELECT ename, sal FROM emp");

ResultSet 객체에서 값 꺼내오기

rs.next();
String name = rs.getString("ename");
int salary = rs.getInt("sal");

Connection 반환하기

반환 작업은 사용했던 객체를 역순으로 닫음

rs.close();
stmt.close();
conn.close();

ResultSet

Query의 실행 결과를 담는 객체

  • 최초에는 결과 집합에서 0번째 줄을 가리키고
    다음 줄을 가리키기 위해서는 next() 메서드를 수행

데이터 변경

SELECT 명령 이외의 명령을 실행 할 때는 executeUpdate() 메서드를 사용한다.

  • return값은 SQL 명령에 의해 테이블에서 변화된 행의 갯수를 의미

동적 쿼리

PreparedStatement

  • 미리 구문을 만들어 두어 반복적으로 사용
  • 한 statement당 한 종류만의 SQL문을 사용 가능
  • ?을 통해 매개변수 전달
  • 미리 SQL문을 해석해 두기 때문에 속도 향상

CallableStatement

  • 프로시져를 만들어 놓고 호출하여 사용
profile
IT 기술블로그

0개의 댓글