Eclipse로 Oracle DB 연결
우리가 생성한 Oracle 데이터베이스를 Eclipse에 연결해서 쿼리문을 날려보자.
우선 준비물이 있는데, 그것부터 챙겨보자.
자바로 데이터베이스에 접근하려면 JDBC (Java DataBase Connectivity) 드라이버가 필요하다.
이 드라이버는 여기에서 설치된 자바버전에 호환되는 Oracle JDBC Driver로 다운로드를 받으면 된다.
JDBC and UCP Downloads page
We’re sorry. We could not find a match for your search. We suggest you try the following to help find what you’re looking for: Check the spelling of your keyword search. Use synonyms for the keyword you typed, for example, try "application" instead of
www.oracle.com
나는 JDK17을 사용하고 있으므로 ojdbc11.jar를 다운받았다.
그리고 이클립스를 실행시켜서 DB연결을 연습할 새로운 프로젝트를 생성해보자.
이렇게 새로 만든 javaJDBC프로젝트에서 -> Build Path -> Configure Build Path...를 눌러서 아까 다운받은 드라이버를 등록해주자.
이런 창이 나올텐데, Libraries -> Classpath 안에 아까 다운받은 드라이버(ojdbc##.jar)를 추가하면 된다.
Apply and Close를 눌러서 적용시키자.
이렇게 Referenced Libraries에 드라이버가 제대로 추가된 것을 확인했다.
**JDK1.8 이후 버전에서는 프로젝트 생성할때 module-info.java 생성 옵션이 있는데, 꼭 체크해제를 해주거나 생성된 module-info.java를 지워야한다.
이제 준비가 끝났으니 DB를 접속하는 코드를 작성해보자.
새로운 클래스를 만들자. 이름은 DBConn으로 정하고, main 메소드는 생성하지 않는다.
우리가 거칠 단계는 총 6단계이다.
1. JDBC 드라이버 로딩
package javaJDBC;
public class DBConn {
static { // 멤버변수와 생성자메소드 실행되기 전에 먼저 실행된다
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException e) {
System.out.println("JDBC 드라이버 로딩 예외 발생." + e.getMessage());
}
}
}
우선 드라이버 연결은 한번 실행해놓으면 바꿀일이 없기 때문에 static으로 정의해주었다.
Class클래스의 forName()메소드는 안에 있는 문자열로 클래스를 찾아서 실행시켜준다. 물론 ClassNotFoundException으로 예외처리를 해준다.
2. 변수 선언
package javaJDBC;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Connection;
public class DBConn {
static { // 멤버변수와 생성자메소드 실행되기 전에 먼저 실행된다
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException e) {
System.out.println("JDBC 드라이버 로딩 예외 발생." + e.getMessage());
}
}
protected Connection conn = null; // 패키지가 다를 경우 상속받아 사용 가능
protected PreparedStatement pstmt = null;
protected ResultSet rs = null; // SELECT문에 사용됨
String sql = null;
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String username = "scott";
String password = "tiger";
}
연결에 필요한 변수와 메소드 정의를 해줬다.
sql에는 쿼리문을 대입할 것이고, url은 데이터베이스의 주소(localhost)의 정보, username과 password는 각각 scott과 tiger를 넣어주었다.
conn, pstmt, rs는 각각 DB 연결용 인터페이스인 Connection, 쿼리문 실행용 인터페이스 PreparedStatement pstmt, SELECT문의 결과를 담아주는 ResultSet이다. 나중에 쓰일 예정이므로 일단 정의해준다.
3. DB 연결
package javaJDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBConn {
static { // 멤버변수와 생성자메소드 실행되기 전에 먼저 실행된다
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException e) {
System.out.println("JDBC 드라이버 로딩 예외 발생." + e.getMessage());
}
}
protected Connection conn = null; // 패키지가 다를 경우 상속받아 사용 가능
protected PreparedStatement pstmt = null;
protected ResultSet rs = null; // SELECT문에 사용됨
String sql = null;
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String username = "scott";
String password = "tiger";
public void dbConn() { // Connection 인터페이스 객체생성
try {
conn = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
System.out.println("DB 연결 예외발생" + e.getMessage());
}
}
}
필요한 정보들을 입력해주었으니, 이를 이용해 연결하는 메소드를 작성해보자.
DB연결에 사용할 클래스는 Connection이라는 인터페이스이다. 인터페이스는 생성자가 없기 때문에, 우선 null로 만들고 밑에서 객체생성을 해준다.
dbConn()이라는 메소드를 만들고, null로 정의된 Connection 인터페이스에 DriverManager클래스의 getConnection()메소드를 대입한다. 여기서 SQLException 예외처리도 잊지말고 해준다.
4. DB 닫기
package javaJDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBConn {
static { // 멤버변수와 생성자메소드 실행되기 전에 먼저 실행된다
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException e) {
System.out.println("JDBC 드라이버 로딩 예외 발생." + e.getMessage());
}
}
protected Connection conn = null; // 패키지가 다를 경우 상속받아 사용 가능
String sql = null;
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String username = "scott";
String password = "tiger";
public void dbConn() { // Connection 인터페이스 객체생성
try {
conn = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
System.out.println("DB 연결 예외발생" + e.getMessage());
}
}
public void dbClose() { // 생성된 객체를 역순으로 닫는다
try {
if(rs!=null) rs.close();
if(pstmt!=null) pstmt.close();
if(conn!=null) conn.close();
}catch(SQLException e) {
System.out.println("DB 닫기 예외발생" + e.getMessage());
}
}
}
DB를 연결했으니, 연결을 해제하는 메소드도 있어야한다. 아까 생성한 인터페이스들을 열어준 순서 반대로 닫아주면 된다.
우리가 방금 1~4단계에서 만든 DBConn이라는 클래스는 쿼리문 클래스에 상속시켜줘서 사용할 예정이다. 이렇게 하게되면 하나의 데이터베이스에 하나의 DB연결 클래스만 만들면 되기 때문에 연결 과정을 생략할 수 있다.
이제부터 쿼리문의 종류에 따라 두 가지 방식으로 나뉜다. 단순 검색/조회만 하는 SELECT문과, 그 외에 데이터베이스의 데이터값을 추가/수정/삭제하는 INSERT/UPDATE/DELETE문으로.
다음 글에서 DBConn클래스를 상속받아 Eclipse에서 쿼리문을 날려보자.
'Database' 카테고리의 다른 글
11.24.(금) OracleDB(20): Eclipse+PL/SQL (0) | 2022.11.29 |
---|---|
11.17.(목) Database(19): Eclipse로 Oracle DB 연결(2) (0) | 2022.11.29 |
11.24.(금) OracleDB(17): PL/SQL (0) | 2022.11.29 |
11.23.(수) OracleDB(16): Docker 컨테이너 파일 접속 (0) | 2022.11.27 |
11.23.(수) OracleDB(15): 사용자 생성 및 관리 (0) | 2022.11.27 |