memo6759 님의 블로그
2025-09-30(JDBC) 본문
JDBC(Java Database Connectivity) 정
- Java와 DBMS를 연결하기 위한 API
- 자바 프로그램에서 SQL문을 실행할 수 있도록 제공되는 기술
MySQL 접속을 위한 사전작업
- 드라이버 다운로드
- 사용하는 DBMS(Oracle, MySQL 등)의 공식 홈페이지에서 다운로드
- 드라이버 등록 (Eclipse/IntelliJ 기준)
- 프로젝트 선택 → 우클릭 → Build Path → Configure Build Path
- Libraries 탭 → Add External JARs... → 드라이버 파일 추가
JDBC 프로그래밍 단계
1. 드라이버 로딩
- JVM 메모리에 DBMS의 드라이버 클래스를 로딩
- Class.forName("드라이버 클래스명") 사용
// MySQL
Class.forName("com.mysql.cj.jdbc.Driver");
// Oracle
Class.forName("oracle.jdbc.driver.OracleDriver");
2. DBMS 연결
- DriverManager.getConnection() 메소드 사용
Connection con = DriverManager.getConnection(url, user, password);
- 매개변수 설명
- url : DB 접속 정보 (DBMS마다 형식이 다름)
- user / password : 계정 정보
- 리턴 : Connection 객체 (DB 연결 정보 저장)
접속 URL 예시
MySQL
jdbc:mysql://192.168.14.19:3306/mytestdb?serverTimezone=UTC
Oracle
jdbc:oracle:thin:@192.168.14.79:1521:xe
SQL 실행 객체 생성 (CRUD)
- SQL 실행은 Statement, PreparedStatement, CallableStatement로 가능
객체 종류
- Statement : 정적 SQL 실행 (보안에 취약, SQL Injection 위험)
- PreparedStatement : 동적 SQL 실행 (보안 ↑, 성능 ↑, 권장 방식)
- CallableStatement : 프로시저/함수 호출
예시:
// Statement
Statement stmt = con.createStatement();
// PreparedStatement
PreparedStatement pstmt = con.prepareStatement("SELECT * FROM member WHERE id=? AND pass=?");
4. SQL문 실행
Statement
// 데이터 변경 (insert, update, delete)
int result = stmt.executeUpdate("INSERT INTO member VALUES(...)");
// 데이터 조회 (select)
ResultSet rs = stmt.executeQuery("SELECT * FROM member");
PreparedStatement
// ?에 값 세팅
pstmt.setString(1, "bts1");
pstmt.setString(2, "1234");
// 실행
ResultSet rs = pstmt.executeQuery(); // select
int result = pstmt.executeUpdate(); // insert, update, delete
결과 처리
- insert / update / delete : 결과는 반영된 레코드 수(int)
- select : ResultSet 객체 반환 → 반복문으로 데이터 추출
while (rs.next()) {
String id = rs.getString("id");
int point = rs.getInt("point");
Date hiredate = rs.getDate("hiredate");
System.out.println(id + " / " + point + " / " + hiredate);
}
자원 반납
모든 작업이 끝나면 반드시 자원 닫기 필요
rs.close();
pstmt.close();
con.close();
- 드라이버 로딩 → Class.forName()
- DB 연결 → DriverManager.getConnection()
- SQL 실행 객체 생성 → Statement / PreparedStatement
- SQL 실행 → executeUpdate / executeQuery
- 결과 처리 → ResultSet
- 자원 해제 → close()
'HDC 학습일지' 카테고리의 다른 글
| 2025-10-02 (JDBC - final(2), JPA, DAO, DTO, 라즈베리파이) (0) | 2025.10.04 |
|---|---|
| 2025-10-1(JDBC - final , DBA, 라즈베이파이 , MQTT) (0) | 2025.10.01 |
| 2025-09-29(SQL-4 DDL, 제약조건, VIEW) (0) | 2025.09.30 |
| 2025-09-26(SQL-3) (0) | 2025.09.27 |
| 2025-09-25(SQL-2) (0) | 2025.09.25 |