개발/JAVA
자바(JDBC)로 오라클 데이터베이스 연동하기
예니03
2025. 2. 21. 09:05
반응형
자바에서 데이터베이스를 다루기 위해 JDBC(Java Database Connectivity)를 사용합니다. 이번 포스팅에서는 오라클 데이터베이스와 연결하여 데이터를 조회하고 조작하는 간단한 프로그램을 만들어 보겠습니다.
1. JDBC란?
JDBC는 자바에서 데이터베이스와 상호작용할 수 있도록 도와주는 API입니다. 데이터베이스와 연결하여 데이터를 입력, 수정, 삭제, 조회하는 기능을 제공합니다.
JDBC 프로그래밍 흐름
- JDBC 드라이버 로드
- 데이터베이스 연결
- SQL 실행
- 결과 처리
- 연결 종료
2. 오라클 데이터베이스 연결하기 (ConnectionTest.java)
먼저, 오라클 데이터베이스에 연결하는 코드를 작성해 봅시다.
package com.javaex.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionTest {
public static void main(String[] args) {
String dburl = "jdbc:oracle:thin:@localhost:1521:xe";
String dbuser = "hr";
String dbpass = "hr";
Connection conn = null;
try {
// JDBC 드라이버 로드
Class.forName("oracle.jdbc.driver.OracleDriver");
// 데이터베이스 연결
conn = DriverManager.getConnection(dburl, dbuser, dbpass);
System.out.println("연결 성공!");
} catch (ClassNotFoundException e) {
System.err.println("JDBC 드라이버를 로드하지 못했습니다.");
} catch (SQLException e) {
System.err.println("SQL Error!");
} finally {
try {
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
코드 설명
- Class.forName("oracle.jdbc.driver.OracleDriver") : JDBC 드라이버를 로드합니다.
- DriverManager.getConnection(dburl, dbuser, dbpass) : 데이터베이스에 연결합니다.
- conn.close() : 연결을 종료합니다.
3. 사원 이름과 매니저 이름 조회하기 (HREmpList.java)
데이터베이스에서 사원과 매니저의 이름을 조회해 보겠습니다.
package com.javaex.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class HREmpList {
public static void main(String[] args) {
String dburl = "jdbc:oracle:thin:@localhost:1521:xe";
String dbuser = "hr";
String dbpass = "hr";
try (Connection conn = DriverManager.getConnection(dburl, dbuser, dbpass);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT e.first_name || ' ' || e.last_name AS employee_name, m.first_name || ' ' || m.last_name AS manager_name FROM employees e JOIN employees m ON e.manager_id = m.employee_id ORDER BY employee_name DESC")) {
while (rs.next()) {
String employeeName = rs.getString("employee_name");
String managerName = rs.getString("manager_name");
System.out.printf("사원: %s, 매니저: %s%n", employeeName, managerName);
}
} catch (SQLException e) {
System.err.println("SQL Error!");
}
}
}
코드 설명
- ResultSet 객체를 사용하여 데이터베이스에서 검색된 결과를 가져옵니다.
- ORDER BY employee_name DESC를 사용하여 사원 이름을 내림차순 정렬합니다.
4. 급여 검색 프로그램 (HRSalary.java)
사용자로부터 입력받은 최소 급여와 최대 급여 범위에 해당하는 사원 목록을 출력하는 프로그램을 만들어 보겠습니다.
package com.javaex.jdbc;
import java.sql.*;
import java.util.Scanner;
public class HRSalary {
public static void main(String[] args) {
String dburl = "jdbc:oracle:thin:@localhost:1521:xe";
String dbuser = "hr";
String dbpass = "hr";
try (Scanner scanner = new Scanner(System.in);
Connection conn = DriverManager.getConnection(dburl, dbuser, dbpass);
PreparedStatement stmt = conn.prepareStatement("SELECT first_name, last_name, salary FROM employees WHERE salary BETWEEN ? AND ? ORDER BY salary ASC")) {
System.out.print("최소 급여: ");
int minSalary = scanner.nextInt();
System.out.print("최대 급여: ");
int maxSalary = scanner.nextInt();
stmt.setInt(1, minSalary);
stmt.setInt(2, maxSalary);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
System.out.printf("%s %s %d%n", rs.getString("first_name"), rs.getString("last_name"), rs.getInt("salary"));
}
} catch (SQLException e) {
System.err.println("SQL Error!");
}
}
}
코드 설명
- Scanner를 사용하여 사용자 입력을 받습니다.
- PreparedStatement를 사용하여 SQL 문을 실행합니다.
- BETWEEN ? AND ?를 사용하여 최소 급여와 최대 급여 범위 내의 사원을 검색합니다.
5. 부서 목록 조회 (SelectTest.java)
마지막으로, 부서 목록을 출력하는 프로그램을 작성해 보겠습니다.
package com.javaex.jdbc;
import java.sql.*;
public class SelectTest {
public static void main(String[] args) {
String dburl = "jdbc:oracle:thin:@localhost:1521:xe";
String dbuser = "hr";
String dbpass = "hr";
// Connection, Statement, ResultSet
// try - with - resources 문 (자동 자원 정리)
// AutoCloseable 인터페이스를 구현한 클래스들을 사용 가능하다.
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try (Connection conn = DriverManager.getConnection(dburl, dbuser, dbpass);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT department_id, department_name FROM departments")) {
while (rs.next()) {
System.out.printf("%d: %s%n", rs.getInt("department_id"), rs.getString("department_name"));
}
} catch (SQLException e) {
System.err.println("SQL Error!");
}
}
}
코드 설명
- 부서 ID와 부서명을 조회하는 간단한 SELECT 문을 실행합니다.
- try-with-resources를 사용하여 자원을 자동으로 정리합니다.
결론
이제 자바에서 JDBC를 사용하여 오라클 데이터베이스와 상호작용하는 방법을 익혔습니다. 위 예제들을 응용하면 다양한 데이터베이스 응용 프로그램을 개발할 수 있습니다! 😊
반응형