Java에서 데이터베이스와 관련된 작업을 처리할 수 있도록 하는 API
🌼 API (Application Programming Interface)
: 운영체제나 프로그래밍 언어가 제공하는 기능을 사용할 수 있도록 하는 인터페이스
오라클에서 제공하는 Java와 오라클 DBMS를 연결하기 위한 라이브러리(클래스, 코드)
Oracle JDBC Driver 제공
Connection : DB 연결 정보를 담은 객체
◾ 연결 정보 : 아이디, 비밀번호, 주소, 접속 방식, DB 이름
Statement : Connection 객체를 통해 DB에 SQL문을 전달하여 실행시키고
결과를 반환 받는 객체
PreparedStatement : 각각의 인수에 대해 ?(위치 홀더)를 사용해 SQL 구문을 정의하며
위치 홀더가 채워진 후 별도의 SQL 전달 메서드를 수행해
DB에 전달하고 결과를 반환 받는 객체
🌼 ? : SQL에 들어갈 리터럴을 동적으로 작성할 수 있도록 하는 부분
SELECT * FROM STUDENT WHERE STD_NAME = ?
ResultSet : SELECT문 질의 성공 시 반환되는 결과를 저장하는 객체
커서를 이용해 한 행씩 접근
DriverManager : JDBC 드라이버를 이용하여 커넥션을 만드는 객체
⭐ 반드시 예외처리를 해야 한다!
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@127.0.0.1:1521:xe", "doni", "doni");
◾ jdbc:oracle:thin
: JDBC 드라이버 타입 → thin
◾ @127.0.0.1 (루프백 아이피)
: 내 컴퓨터 주소
◾ 1521
: 포트 번호 (Oracle DBMS 설치 시 기본 포트)
◾ xe
: Express 버전의 약자, DB 이름
종류 | 설명 |
---|---|
PreparedStatement 객체 | 주로 값을 전달하고나 하는 컬럼이 확정되어 있을 때 사용 SQL문을 미리 만들어놓고 값을 입력하는 방식으로, 효율성이나 유지보수성 측면에서 Statement보다 유리함 |
Statement 객체 | 특정 조건에 따라 컬럼이 정해질 때 주로 사용 |
package doni.jdbc.run;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCBasic {
public static void main(String[] args) {
// 1. JDBC 객체 참조 변수 선언
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 2. Connection 객체 얻어오기
// 2-1) Oracle JDBC Driver 메모리에 로드하기
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2-2) DriverManager 객체를 이용하여 Connection 객체 얻어오기
conn = DriverManager.getConnection
("jdbc:oracle:thin:@127.0.0.1:1521:xe", "doni", "doni");
// 3. DB에 전달할 SQL 구문을 작성
String sql = "SELECT EMP_NAME, SALARY, DEPT_CODE FROM EMPLOYEE";
// 4. SQL을 전달하여 수행하고, 결과를 반환 받을 객체 Statement를 생성
stmt = conn.createStatement();
// 5. Statement 객체에 SQL을 담아 DB에서 수행하고
// 결과를 받아와 ResultSet rs 변수에 저장
rs = stmt.executeQuery(sql);
// 6. 조회 결과가 있을 경우 커서를 이용해 행을 순서대로 접근
while (rs.next()) {
// rs.next() : 커서를 이용해 행을 순서대로 접근
// 7. rs.get[Type]("컬럼명") 메서드를 이용해 컬럼 값 가져오기
// [Type]은 컬럼 값의 Java 버전 자료형 (SQL 자료형 X)
String empName = rs.getString("EMP_NAME");
int salary = rs.getInt("SALARY");
String deptCode = rs.getString("DEPT_CODE");
System.out.printf("이름 : %s / 급여 : %d / 부서코드 : %s \n", empName, salary, deptCode);
}
} catch (Exception e) {
e.printStackTrace();
// printStackTrace() : 발생한 예외, 예외 경로를 모두 출력
} finally {
// 8. 사용한 JDBC 객체 자원 반환
// 8-1) 사용한 객체의 역순으로 close() 수행
// 8-2) close() 전 null 여부 검사 수행
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}