주니어 기초 코딩공부

JAVA JDBC 사용 방법_드라이버 로드, DB 연결 방법, 연결테스트(이클립스&오라클)

jju_developer 2022. 12. 23. 00:35
728x90

안녕하세요 JJU_DEVELOPER입니다.

이번 시간에는 자바의 이클립스와 RDAMS 오라클 연동 대해 설명드리겠습니다.

 

Java에서 DB를 연결하려면 먼저 mysql, 오라클 DB 등이 설치되어있어야 합니다.
각 회사마다 사용하는 Driver가 다르기 때문에 자신이 설치한 DB에 맞는 Driver를 사용해야 합니다.

연결 순서는 아래와 같습니다.
1. 드라이버 로드
2. Connection DB 연결
3. Statement SQL 쿼리 실행
4. excute() 결괏값 처리
5. close() DB 연결 해제

 

1. 드라이버 로드

먼저 로드를 원하는 프로젝트에서 properties를 들어갑니다.

프로젝트-> 우클릭 -> properties

 

자바 빌드 패스에서 Libraries 가서 Add Ecternal JARs를 선택합니다.

 

내가 다운로드한 ojdbc.jar 파일을 열고 Apply 합니다.

 

 

Apply 하고 닫으면 JDBC 드라이버 로딩을 완료하였습니다.

 

이때 내가 드라이버 로딩을 성공했는지 실패했는지 알아보는 코드를 알려드리도록 하겠습니다.

 

<이클립스>

package sec01.exam01_jdbc;

import java.sql.*;

public class JDBC_Connect01 {

	public static void main(String[] args) {

		/** ORACLE JDBC Driver Test ***************************/
		String driver = "oracle.jdbc.driver.OracleDriver";
		/******************************************************/
		//자바에서 오라클을 연결하기 위한 인터페이스 모듈이다.

		/** My-SQL JDBC Driver Test **************************/
		// String driver ="com.mysql.jdbc.Driver";
		/*****************************************************/

		try {
			Class.forName(driver);
			//클래스의 forname이면 클래스의 객체를 생성한다.
			//driver는 "oracle.jdbc.driver.OracleDriver" 이 담겨있다.
			System.out.println("JDBC Driver Loading 성공~^0^!!");

		} catch (Exception e) {
			System.out.println("JDBC Driver Loading 실패~ㅠ0ㅠ!!");
			e.printStackTrace();
		}
	}
}

이 코드를 치고 실행을 누르면 성공 메시지가 뜹니다.

 

 

2. Connection DB 연결

DB 서버와 이클립스를 연결해주어야 합니다.

Java.sql 패키지의 DriverManager 클래스의 getConnection() 메서드를 이용합니다.

실제로 자바 프로그램과 데이터 베이스를 네트워크상에서 연결해주는 메서드이며

연결에 성공하면 DB와 연결된 상태를 Connection 객체로 표현하여 반환해주게 됩니다.

 

getConnection 메서드의 인자값은 무엇이 있을까요??

String url 접속할 서버의 url이며,
프로토콜, 서버주소, 서버포트, DB이름으로 구성됩니다.
Oracle jdbc:oracle:thin:@HOST:PORT:SID
String user DB 서버에 로그인 할 계정
String password DB 서버에 로그인 할 비밀번호

 

위 내용을 요약하면 아래와 같습니다.

package sec01.exam01_jdbc;

import java.sql.*;

public class JDBC_Connect02 {

public static void main(String[] args) {
	String driver = "oracle.jdbc.driver.OracleDriver";

	String url = "jdbc:oracle:thin:@localhost:1521:XE";

	Connection con = null;

try {

	Class.forName(driver);

	con = DriverManager.getConnection(url, "SCOTT", "TIGER");

	System.out.println("데이터베이스 연결 성공~^3^  !!");

} catch (Exception e) {
	System.out.println("데이터베이스 연결 실패~ㅠ0ㅠ !!");
	e.printStackTrace();
} finally {
try {
	if (con != null)
	con.close();
} catch (Exception e) {
	System.out.println(e.getMessage());
			}
		}
	}
}

<정리>

1. driver라는 변수에 String 문자열을 넣습니다. "oracle.jdbc.driver.OracleDriver"JDBC 드라이버 파일 안에서 드라이버 인터페이스를 상속하고 있는 클래스의 이름을 패기지 이름과 정확하게 명시해주어야 합니다.

 

2. String url = "jdbc:oracle:thin:@localhost:1521:XE";

url 변수에  접속할 프로토콜, 서버주소, 서버포트, DB이름으로 구성된 주소를 넣습니다.

 

3. JDBC 드라이버를 메모리에 동적으로 로딩하기 위해서 Class.forName()을 사용합니다.

인자값으로는 아까 담은 driver를 넣어주었습니다.

 

-> try catch 문을 사용해서 연결이 성공할 때와 실패할 때 메시지를 넣어 

확인이 가능하도록 하였습니다.

 

4. 실행한 Connection 객체인 con을 닫아주어야 합니다.

닫을 때에도 try catch로 감싸주어야 합니다.

 

해당 코드를 실행하면 정상적으로 데이터 베이스에 연결 성공하는 것을

볼 수 있습니다.

 

 

 

 

3. 오라클과 이클립스 연결 테스트

우선, 오라클에서 scott 계정의 tiger로 가서 

테이블을 하나 생성하겠습니다.

 

CREATE TABLE CUSTOMER( NO NUMBER(4)  PRIMARY KEY, 

		       NAME VARCHAR2(20),

		       EMAIL VARCHAR2(20),

		       TEL VARCHAR2(20)  );

해당 빈 테이블이 생성되는 것을 볼 수 있습니다.

 

이제 자바 이클립스로 가서 해당 빈테이블에 데이터를 채워 볼까요???

/* 자바에서 오라클 DB연결 방법
1. 프로젝트에 ojdbc7.jar 자료파일 라이브러리를 포함시킨다.
2. OracleDriver 클래스를 JVM에 로드시킨다.
-> 로드 방법은 Class.forName(..)을 해서 쓴다.
3. 로드 후, java.sql.DriverManager.getConnection()로
커넥션 객체를 만든다.
Connection con = DriverManager.getConnection();
(url, 'Scott', 'Tiger');
4. 커낵션 객체에서 Statement 객체를 얻는다.
5. Statement 객체에 있는 ExecuteQuery문자에 SQL문장을 넣는다.
Statement.executeQuery("insert into...);
6.  Statement.close()
Connection.close()
*/

package sec02.exam01_statement;

import java.sql.*;

public class JDBC_Insert {

	public static void main(String[] args) {
	
//		1. 프로젝트에 ojdbc7.jar 자료파일 라이브러리를 포함시킨다.
		String driver = "oracle.jdbc.driver.OracleDriver";
		Connection con = null;
		String url = "jdbc:oracle:thin:@localhost:1521:XE";
		String sql;
		Statement stmt = null;
//		2. OracleDriver 클래스를 JVM에 로드 시킨다.
		try {
			Class.forName(driver);//이 드라이버로 접속한다.
			System.out.println("JDBC 드라이버 로드 성공 꺅~*^3^*!");
//		3. 로드 후, java.sql.DriverManager.getConnection()로 Connection con = DriverManager.getConnection();
			con = DriverManager.getConnection(url,"SCOTT","TIGER");
			System.out.println("데이버 베이스 연결 성공!! 잘했엉~!!>,<");
//		4. 커낵션 객체에서 Statement 객체를 얻는다.
			stmt = con.createStatement();
			sql = "INSERT INTO CUSTOMER(NO,NAME,EMAIL,TEL) VALUES";
			sql +="(2,'주종선','js@naver.com','010-1234-1534')";
//		5. Statement 객체에 있는 ExecuteQuery문자에 SQL문장을 넣는다.
			int res = stmt.executeUpdate(sql);
			if(res==1) {
				System.out.println("입력성공~~^0^~~");
			}else {
				System.out.println("데이터 입력 실패당 ㅠㅠ");
			}
		} catch (Exception e) {
			System.out.println("JDBC 드라이버 로드 실패 ㅠㅠㅠㅠ!");
			e.printStackTrace();
		}//예외 발생가능
		finally {
			try {
//		6.  Statement.close()	Connection.close()
				stmt.close();
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

 

위 코드는 자바에서 데이터를 입력하는 insert 문입니다.

insert를 하는 방법은 코드에 자세히 적어놓았습니다.

 

여기서 핵심은 드라이버 로드 후 데이터베이스에 연결한 다음

sql문을 적고, 그걸 sql이라는 변수에 담습니다.

담은 그 객체를 Statement인 stmt에 executeUpdate를 활용합니다.

이것은 정수형으로 데이터가 입력되면 1을 반환하게 될 것입니다.

입력이 잘 되었는지 보기 위하여

if문을 활용하여 입력이 성공되었는지, 실패되었는지를

출력하게 끔 코딩하였습니다.

 

stmt와 con은 사용 후 close()를 해주었습니다.

 

이 자바 코드를 여기서 실행하면 출력되는 화면은 아래와 같습니다.

 

 

그렇다면 제가 입력한 데이터 값은 어디에 저장이 될까요??

 

맞습니다!!

 

바로 오라클 DB에 저장됩니다.

 

그럼 바로 오라클로 가서 SELECT 테이블을 해보겠습니다~!!

이렇게 SELECT문을 활용하여 테이블을 검색했더니!

 

방금 자바 이클립스에서 입력한 데이터가 정상적으로

입력된 것을 볼 수 있습니다~!!

 

 

그럼 지금까지 자바와 SQL 오라클을 연결하여 데이터를 Insert까지 해보았습니다.

 

이제부터 한 걸음씩 더 나아가고 있는데요~

 

앞으로도 더 많은 자바, DB, 자격증 타파! 까지 해보도록 하겠습니다.

 

 

오늘도 수고하셨습니다~!

 

 

728x90