JDBC(Java Database Connectivity)
- Driver를 통한 자바와 데이터베이스에 연결 및 작업을 하기 위한 것이 주된 목적
- JDBC는 자바 표준 인터페이스임 - JDBC API를 사용함
- JDBC는 자바와 데이터베이스 간의 통신 역할을 해줌 - 중계적 역할을 함
* JDBC 주요 인터페이스
- java.sql.Driver : 데이터베이스에서 사용되는 드라이버 인터페이스
- java.sql.Connection : 데이터베이스 연결 정보를 가지고 있는 인터페이스
- java.sql.PreparedStatement : statement 인터페이스의 서브 인터페이스
데이터베이스에 SQL문을 전송하는 방법을 알고 있는 이너페이스
- java.sql.ResultSet : 데이터베이스의 실행 결과를 가지고 있는 인터페이스
* 오라클 DB를 Java에 연결하는 방법
1. 물리적인 드라이브 설치
- JDBC 라이브러리를 이용한 DB에 연결하기 위해서는 해당 DB 프로그램의 기능을 수행하는 외부 라이브러리 파일을 프로젝트에 추가해 주어야 DB를 연결할 수 있음
- 오라클 드라이버 파일(C:\app\컴퓨터이름\product\18.0\dbhomeXE\jdbc\lib) 폴더 안에 있는 ojdbc8.jar 파일을 프로젝트에 포함시켜 주면 됨
- 주요 데이터베이스에 대한 JDBC 드라이버에 해당하는 클래스
Oracle : oracle.jdbc.driver.OracleDriver
MySQL : com.mysql.jdbc.Driver
2. JDBC URl
- 각각의 웹사이트를 구분할 때 http://www.naver.com, http://www.daum.net같은
URL을 사용함. 이와 비슷하게 데이테베이스를 구분할 때도 URL과 비슷한 형식을 갖는 JDBC URL을 사용
* 오라클 URL ===> jdbc.oracle:thin:@host 주소 : port번호 : 데이터베이스 식별자
* 참고로 오라클 드라이버는 thin 드라이버와 oci 드라이버가 있음
- thin 드라이버는 자바 언어로만 구현된 jdbc 드라이버로 jdk만 설치되어 있으면 어디든지 사용가능
- oci 드라이버는 모듈을 설치해 주어야 사용이 가능한 드라이버
3. 드라이버 로딩
- 포함된 라이브러리를 바탕으로 해당 오라클 드라이버를 메모리로 업로드를 시켜주어야 함.
- 드라이버를 메모리로 업로드 시키는 방법은 Class.forName(드라이버 파일) 메서드를 이용
- 특정 클래스를 로딩하면 자동으로 객체가 생성이 되고, DriverManager에 등록이 됨
일반적으로 드라이버 클래스들은 로드될 때 자신의 인스턴스를 생성하고,
자동적으로 DriverManager 클래스 메소드를 호출하여 그 인스턴스를 등록함
- 이 메소드는 Class라는 클래스에 포함되어 있으며, 해당 파일 경로에 위치할 파일을 동적으로 프로그램이 실행될 때 메모리 상에 업로드 시키는 기능을 수행 함
- DMBS 별로 알맞은 JDBC 드라이버 필요 (jar)
- 로딩코드 : Class.forName(“JDBC드라이버 이름”);
• MySQL : com.mysql.jdbc.Driver
• 오라클 : oracle.jdbc.driver.OracleDriver
• MSSQL : com.microsoft.sqlserver.jdbc.SQLServerDriver
4. 커넥션 연결
- 설치된 드라이버를 메모리 상에 업로드 시키면 이제 DB를 지금 사용하는 프로그램과 연결을 시켜주어야 함
이러한 연결을 시켜주는 것을 커넥션(Connection)이라고 함
- DriverManager 클래스는 데이버 원본에 JDBC 드라이버를 통하여 커넥션을 만드는 역할
- DriverManager 클래스의 getConnection() 메소드를 이용하여 자신이 사용하는
오라클 정보를 인자로 전달하여 연결을 수행하게 됨
- 오라클에 접속하기 위해서는 오라클의 정보(오라클 서버의 IP, 리스너 포트, 오라클 계정,
계정의 비밀번호)를 알아야 함 => url에 있으므로 그대로 복사 붙여넣기 했다.
실제 연결 순서
1. 오라클 드라이버 로딩
2. 데이터베이스 커넥션 구함
3. 쿼리 실행을 위한 PreparedStatement 객체 생성
4. 쿼리실행
5. 쿼리 실행 결과를 사용
6. 쿼리 종료
7. PreparedStatement 사용 종료
8. 데이터베이스 커넥션 사용 종료
예문) 오라클 DB을 JAVA에 연동하고, memo테이블에 있는 특정 데이터를 삭제해보자.
package sist;
import java.sql.*;
import java.util.Scanner;
public class Delete {
public static void main(String[] args) {
Connection con = null; // 데이터베이스와 연결하는 객체 생성
PreparedStatement pstmt = null; //SQL문을 전송하는 객체 생성
// ResultSet rs = null; //SQL문의 실행 결과를 가지고 있는 객체 ==> select 쿼리문에서만 사용
String url = "jdbc:oracle:thin:@localhost:1521:xe"; // URL 사용
String driver = "oracle.jdbc.driver.OracleDriver";
String user = "web";
String password = "1234";
Scanner sc = new Scanner(System.in);
System.out.print("삭제할 메모 번호를 입력해주세요 : ");
int no = sc.nextInt();
try {
// 1. 오라클 드라이버 로딩
Class.forName(driver);
// 2. 데이터베이스와 연결 진행
con = DriverManager.getConnection(url, user, password);
// 3. 데이터베이스에 전송하기 위한 SQL문 작성
String sql = "delete from memo where bunho = ?";
pstmt = con.prepareStatement(sql);
// pstmt.set<데이터타입>(? 순서, 값)
pstmt.setInt(1, no);
// 4. 데이터베이스에 SQL문을 전송
int result = pstmt.executeUpdate();
if(result > 0) {
System.out.println("데이터 삭제 성공");
} else {
System.out.println("데이터 삭제 실패");
}
// 연결객체 종료
pstmt.close(); con.close(); sc.close();
} catch(Exception e) {
e.printStackTrace(); }
}
}
오라클에서 확인하면 이렇게 5번 메모가 삭제된 것을 볼 수 있다.
'Back-End > JDBC' 카테고리의 다른 글
[JDCB] select문 예문 (0) | 2021.10.05 |
---|---|
[JDBC] sql_insert / update 문 예문 (0) | 2021.10.05 |
댓글