JDBC - 1

DONI·2021년 10월 10일
0

Java

목록 보기
45/46
post-thumbnail

🏹 JDBC (Java DataBase Connectivity)

Java에서 데이터베이스와 관련된 작업을 처리할 수 있도록 하는 API

  • JDBC 구조

  🌼 API (Application Programming Interface)
       : 운영체제나 프로그래밍 언어가 제공하는 기능을 사용할 수 있도록 하는 인터페이스


🏹 ojdbc6.jar

오라클에서 제공하는 Java와 오라클 DBMS를 연결하기 위한 라이브러리(클래스, 코드)
Oracle JDBC Driver 제공

  • 라이브러리 등록 방법필수!
    Java Project → Properties → Java Build Path → Libraries → Add External JARs...

🏹 JDBC 사용 객체

  • Connection : DB 연결 정보를 담은 객체
      ◾ 연결 정보 : 아이디, 비밀번호, 주소, 접속 방식, DB 이름

  • Statement : Connection 객체를 통해 DB에 SQL문을 전달하여 실행시키고
                    결과를 반환 받는 객체

  • PreparedStatement : 각각의 인수에 대해 ?(위치 홀더)를 사용해 SQL 구문을 정의하며
                                 위치 홀더가 채워진 후 별도의 SQL 전달 메서드를 수행해
                                 DB에 전달하고 결과를 반환 받는 객체
    🌼 ? : SQL에 들어갈 리터럴을 동적으로 작성할 수 있도록 하는 부분
        SELECT * FROM STUDENT WHERE STD_NAME = ?

  • ResultSet : SELECT문 질의 성공 시 반환되는 결과를 저장하는 객체
                   커서를 이용해 한 행씩 접근

  • DriverManager : JDBC 드라이버를 이용하여 커넥션을 만드는 객체
    ⭐ 반드시 예외처리를 해야 한다!
    Connection conn = DriverManager.getConnection
    ("jdbc:oracle:thin:@127.0.0.1:1521:xe", "doni", "doni");

        ◾ jdbc:oracle:thin : JDBC 드라이버 타입 → thin
        ◾ @127.0.0.1 (루프백 아이피) : 내 컴퓨터 주소
        ◾ 1521 : 포트 번호 (Oracle DBMS 설치 시 기본 포트)
        ◾ xe : Express 버전의 약자, DB 이름


🏹 SQL문 실행 객체

종류설명
PreparedStatement 객체주로 값을 전달하고나 하는 컬럼이 확정되어 있을 때 사용
SQL문을 미리 만들어놓고 값을 입력하는 방식으로,
효율성이나 유지보수성 측면에서 Statement보다 유리함
Statement 객체특정 조건에 따라 컬럼이 정해질 때 주로 사용

🚩 소스코드

package doni.jdbc.run;

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

public class JDBCBasic {
	public static void main(String[] args) {
		// 1. JDBC 객체 참조 변수 선언
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		
		try {
			// 2. Connection 객체 얻어오기
			
			// 2-1) Oracle JDBC Driver 메모리에 로드하기
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			// 2-2) DriverManager 객체를 이용하여 Connection 객체 얻어오기
			conn = DriverManager.getConnection
					("jdbc:oracle:thin:@127.0.0.1:1521:xe", "doni", "doni");
						
			// 3. DB에 전달할 SQL 구문을 작성
			String sql = "SELECT EMP_NAME, SALARY, DEPT_CODE FROM EMPLOYEE";
			
			// 4. SQL을 전달하여 수행하고, 결과를 반환 받을 객체 Statement를 생성
			stmt = conn.createStatement();
			
			// 5. Statement 객체에 SQL을 담아 DB에서 수행하고
			//    결과를 받아와 ResultSet rs 변수에 저장
			rs = stmt.executeQuery(sql);
			
			// 6. 조회 결과가 있을 경우 커서를 이용해 행을 순서대로 접근
			while (rs.next()) {
				// rs.next() : 커서를 이용해 행을 순서대로 접근
				
				// 7. rs.get[Type]("컬럼명") 메서드를 이용해 컬럼 값 가져오기
				//    [Type]은 컬럼 값의 Java 버전 자료형 (SQL 자료형 X)
				String empName = rs.getString("EMP_NAME");
				int salary = rs.getInt("SALARY");
				String deptCode = rs.getString("DEPT_CODE");
				
				System.out.printf("이름 : %s / 급여 : %d / 부서코드 : %s \n", empName, salary, deptCode);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
			// printStackTrace() : 발생한 예외, 예외 경로를 모두 출력
			
		} finally {
			// 8. 사용한 JDBC 객체 자원 반환
			
			// 8-1) 사용한 객체의 역순으로 close() 수행
			// 8-2) close() 전 null 여부 검사 수행
			
			try {
				if (rs != null) rs.close();
				if (stmt != null) stmt.close();
				if (conn != null) conn.close();
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}
profile
틀린 내용이 있다면 댓글 또는 이메일로 알려주세요 ❤ꔛ❜

0개의 댓글