JAVA - Oracle JDBC

설치및 등록방법은 아래 게시글 확인해주세요

https://memory-develo.tistory.com/82

 

JAVA - JDBC 다운, 적용

JDBC 자바에서 데이터베이스에 접근할 수 있게 해주는 API 1. OJDBC6 다운로드 https://www.oracle.com/index.html 2. 라이브러리 등록 1. 기본 라이브러리로 설정 프로젝트 생성시 수동적으로 ojdbc6.jar 파일을..

memory-develo.tistory.com

 

Character Set 설정

문자 인코딩 방식이 맞지 않으면 해당 문자가 제대로 출력되지 않는 현상이있으므로

이클립스 작업 파일에 대한 문자셋을 UTF-8로 변경해주어야함 

아래의 두가지 언어셋설정해주세요,

 

JDBC 사용 객체

DriverManager

데이터 원본에 JDBC 드라이버를 통하여 커넥션을 만드는 역할

Class.forName() 메소드를 통해 생성되며 반드시 예외처리를 해야 함

직접 객체 생성이 불가능하고 getConnection() 메소드를 사용하여 객체 생성 가능

Connection

특정 데이터 원본과 연결된 커넥션을 나타내며 Statement 객체를 생성할 때도 Connection 객체를 사용하여 createStatement() 메소드를 호출하여 생성 SQL 문장을 실행시키기 전에 우선 Connection 객체가 있어야함

Statement

Connection객체에 의해 프로그램에 리턴되는 객체에 의해 구현되는 일종의 메소드 집합 정의

Connection클래스의 createStatement 메소드를 호출하여 얻어지며

생성된 Statement객체로 질의문장을 String 객체에 담아 인자로 전달하여

executeQuery() 메소드를 호출하여 질의 수행

 

 

ResultSet

SELECT문을 사용한 질의 성공 시 ResultSet 으로 반환

SQL 질의에 의해 생성된 테이블을 담고 있으며 커서 로 특정 행에 대한 참조 조작

이렇게 하면 작업끝 

 

EMP 테이블에 저장된 값

 

자바 JDBC 이용하여 전체회원정보 조회한 값

 

전체코드

package com.model.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCModel {
	// 회원정보 전체 조회하기
	public void selectAll() {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			// DriverManager 사용하기
			
			// 1. 무슨드라이버를 사용할지 지정
			//  - ClassNotFound예외 처리 필수
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			// 2. 오라클의 어떤정보에 연결할것이지 (연결주소, 아이디, 비밀번호)
			// 저같은경우는 제컴퓨터에 연결할것이기때문에 127.0.0.1 으로작성함
			// localhost 로작성해도 무방
			// SQLException 예외처리 필수
			// 조회하고 사용한 트랜지션은 닫아줘야하기 때문에 메소드 지역변수로 선언후 사용해야함
			conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe", "scott", "tiger");
			
			// 3. Connection
			// 조회하고 사용한 트랜지션은 닫아줘야하기 때문에 메소드 지역변수로 선언후 사용해야함
			stmt = conn.createStatement();
			
			// 4. Statement
			// 오라클의 emp 테이블의 전체 정보를 조회한다는 변수선언
			String query = "SELECT * FROM EMP";
			
			// executeQuery의 반환값은 ResultSet -> select조회할때 사용
			// executeUpdate의 반환값은 int -> DML 구문 (INSERT, UPDATE, DELETE) 구문에서 사용하면됨
			rs = stmt.executeQuery(query);
			
			// 5. ResultSet
			// 만약 조회결과 를 받아오고 한행의값을 ResultSet이라고 한다.
			// 주로 while반복문 이용하여 많이사용함
			while(rs.next()) { // rs.next() >> 다음행의 값이있는지? 있으면 true, 없으면 false 반환
				/*
				 * EMPNO	NUMBER
					ENAME	VARCHAR2(10 BYTE)
					JOB	VARCHAR2(9 BYTE)
					MGR	NUMBER
					HIREDATE	DATE
					SAL	NUMBER
					COMM	NUMBER
					DEPTNO	NUMBER
				 * */
				
				//값 가져올때는 rs.get자료형("컬럼명") 메소드이용
				int empNo = rs.getInt("EMPNO");
				String empName = rs.getString("ENAME");
				String job = rs.getString("job");
				int mgr = rs.getInt("MGR");
				Date hireDate = rs.getDate("HIREDATE");
				int sal = rs.getInt("sal");
				int comm = rs.getInt("COMM");
				int deptNo = rs.getInt("DEPTNO");
				System.out.println(empNo + ", " + empName + "," + job + ", " + mgr + ", " + hireDate + ", "
						         + sal + ", " + comm + ", " + deptNo);
			}
				
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 사용하고 항상 사용한 객체 close() 작업해줘야함!
			// 안그러면 종료안됨
			try {
				rs.close();
				stmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		
	}

}

 

 

PreparedStatement

Connection 객체의 PreparedStatement() 메소드를 사용하여 객체 생성

SQL 문장이 미리 컴파일 되고 실행 시간동안 인수 값을 위한 공간을 확보한다는 점에서 Statement오 ㅏ다름

각각의 인수에 대해 위치홀더 를 사용하여 SQL문장을 정의할수 있게 함

Statement 랑 사용법 비슷함

정확한 예시는 아래 예제문제를통해 알아볼예정

만약 회원을 추가할때 의 약간의 예시

 

 

실습문제는 다음페이지.....

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유