본문 바로가기
Java & Kotlin/Backend

6. JDBC (이클립스를 이용한 연결, 환경설정, 쿼리문 실행)

by heekng 2021. 1. 19.
반응형
 

SQL을 항상 커맨드창에서 이용하기에는 효율이 떨어지게 됩니다.

또한 자바 코드 내에서 DB에 접근해야 해야 하기도 합니다.

따라서 이번엔 이클립스를 이용해서 자바와 Oracle SQL을 연결하는 방법, JDBC의 간단한 사용법을 알아보겠습니다.


1. 프로젝트 환경설정

1) 가장 먼저 SQL쿼리문을 주고받을 자바 프로젝트를 생성합니다.

2) 프로젝트 우클릭 - Build Path - Configure Build Path - Libraries - Add External Jars 클릭

oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6_g.jar 경로지정 후 열기

Build Path - Configure Build Path

Libraries - Add External Jars

oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6_g.jar

JDBC경로는 개인마다 다릅니다.

위와같이 JDBC 경로가 연결됨을 확인하고 Apply and Close 해줍니다.

제대로 경로가 연결되었다면 프로젝트 하위경로에 위에서 지정한 jdbc가 연결됨을 확인할 수 있습니다.


2. JDBC

JDBC(Java Database Connector)이란 Java를 사용하여 DBMS에 접근할 수 있도록 도와주는 라이브러리입니다.

Oracle 이외에도 MySql, Ms-sql, MariaDB등 다른 DBMS에 관련된 JDBC가 있습니다.

1) URL: jdbc:oracle:드라이버타입:[계정명/비밀번호]@[//]호스트명[:port][/XE]

먼저 URL에 대해 설명하겠습니다.

URL은 DB의 위치를 알려주는 것으로 oracle기준으로 위와 같이 jdbc:oracle:드라이버타입:[계정명/비밀번호]@[//]호스트명[:port][/XE] 형태로 지정합니다.

드라이버타입 - thin: 무료버전이다. / oci: 실제 기업에서 금액을 지불하고 이용하는 DB이다.

호스트명 - localhost 또는 127.0.0.1 (나의(현재) PC) / 접속할 IP주소

포트번호 - 오라클 기본값은 1521입니다. 기본값이라면 작성하지 않아도 되지만, 수정하였으면 수정한 포트번호를 작성하면 되니다.

C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\listener.ora 를 열어서 현재 포트번호를 확인할 수 있습니다.

2) 자바로 쿼리문 실행하기

자바로 쿼리문을 실행하는 과정은

1. 연결 (Connection)

2. 쿼리문 준비 (PreparedStatement)

3. 실행 (excute())

4. 정리 (close())

의 순서로 진행됩니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

package sqlTest;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

 

public class JdbcTest01 {

public static void main(String[] args) {

String id = "ex_user";

String password = "expassword";

String url = "jdbc:oracle:thin:@localhost:1521:xe"; // DB의 위치 설명

 

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

// 패키지 안에 들어있는 OracleDriver 클래스

 

Connection cn = DriverManager.getConnection(url, id, password);

// 접속할 통로 생성

 

PreparedStatement ps = cn.prepareStatement("INSERT INTO ex_table VALUS(3, '이꽥꽤', SYSDATE)");

// 쿼리문 작성

 

ps.execute(); // 준비된 명령어 실행

ps.close(); // 명령어 정리

cn.close(); // 통로 닫기

 

}catch(Exception e) {

e.printStackTrace();

}

}

}

가장 먼저 idpassword, url을 편하게 작성하기 위하여 문자열로 저장하였습니다.

Class.forName은 클래스를 찾겠다는 의미이며, 클래스를 찾음과 동시에 클래스를 로드하여 프로그램 시작 전에 이 클래스를 메모리에 로드합니다.

oracle.jdbc.driver.OracleDriver은 패키지 않에 들어있는 OracleDriver클래스를 뜻합니다.

Connection 클래스는 다리 역할의 객체이며 애플리케이션과 DB를 연결하는 다리역할을 합니다.

DriverManager.getConnection(url, user, password) 메서드를 이용하여 연결할 DB의 위치, sql계정, 비밀번호를 입력하고, 통로를 만듭니다.

PreparedStatement 클래스는 자바에서 SQL쿼리를 실행할 때 사용하는 클래스입니다.

PreparedStatement 클래스에 대한 자세한 내용은 다음 포스트에서 정리하겠습니다.

PreparedStatement에서 쿼리문을 작성할 때에는 ' ; '를 작성하지 않습니다.

.excute();는 작성한 쿼리문을 실행합니다.

원하는 작업이 모두 진행되었다면 Connection과 PreparedStatement를 close해줍니다.

실제로 위 코드를 실행해보면

위와같이 레코드가 정상적으로 추가됨을 확인할 수 있습니다.

반응형