java - JDBC (Java DataBase Connectivity) 사용해보기!

songmin jeon·2023년 12월 7일
0


1. JDBC


1.0. JDBC의 필요성

  • 이클립스 내 데이터로 로그인, 회원 가입의 정보는
    변수로 저장하지 않는 한, 모두 휘발성 자료이다.
  • JAVA와 DB를 연동하여 휘발성 자료가 아닌 DB에 저장된 데이터를 사용하고자 한다.

  • JDBC을 통해, 여러 DBMS을 혼용 가능 !

1.1. JDBC 구조


1.2. DB와 JAVA 연동 (JDBC 사용)


0. 연동을 위한 과정

  • 연동을 위해 5가지 단계가 있음
  1. 드라이버 로딩
  2. 데이터 베이스 연결 (자바와 DB)
  3. SQL 구문 전송
  4. 결과를 작업 처리
  5. 자원반납

1. 드라이버 로딩

  • JDBC 드라이버란?
    : java에서 제공해주는 인터페이스들을 데이터베이스 회사들에서 상속을 받아서 로직(몸체)을 구현한 클래스 파일들의 모음

0) 오라클SQL 에서 CLOUDMEMBER TABLE 생성(로그인 기능 사용을 위해 미리 만들어둠..) - 해당 내용은 여하에 따라 안해도 됨.

1) 이클립스에서 메인 클래스 생성

  • 아래와 같이 작성

위 그림과 같이 try-catch 문으로 예외 처리해준다.

  • try 구문
    • -> 예외가 발생할 수도 있지만, 우선 시도해보는 구간!
  • catch 구문
    • -> 예외가 발생했을때, 어떤 로직을 수행할지 작성하는 구간!
    • -> catch() 안의 매개변수는, 어떤 예외 상황을 잡아줄껀지 기술하는 공간!
  • e.printStackTrace();
    • 예외상황이 왜 발생했고, 어디서 문제가 나고 있는진
      출력해주는 구문! --> e.printStackTrace() 개발을 할때 사용함!
    • -> 배포할때는 삭제하는 것이 좋음!

프로젝트에 처음으로 JDBC 적용시
아래 내용 반드시 따라하기 !! ↓


2번 데이터 베이스 연결 (자바와 DB)

준비물 3가지 (위 그림 참조)

  • 1) 연결 경로 String url ="jdbc:oracle:thin:@localhost:1521:xe";
    • JDBC 드라이버가 thin 타입이다.
    • @localhost --> ip주소(127.0.0.1)
    • 1521 --> port 번호
      xe --> DB기본 이름(별칭)
  • 2) 계정 이름
    • String user = "service";
  • 3) 계정 비밀번호
    • String password = "12345";

  • 준비물 3가지 담을 3번째 선택
    • DriverManager.getConnection(url, user, password);

되도록 2번을 선택하여 catch문을 추가해 주는 것이 좋으나, 이번의 경우는 모든 예외처리가 가능한 경우로 작업, 다음과 같이 변경

Exception으로 모든 예외처리로 변경함.

위 그림처럼 Connection conn 변수에
DriverManager.getConnection(url, user, password); 를 대입해줌 (리턴타입이 Connection 임!)

이후 연결처리 확인을 위해 조건문 사용 결과 확인!


3번 SQL 구문 전달

  • 3-1) Query문 작성

(예시) 추가할 수 있는 sql구문 작성

  • id -> smhrd
  • pw -> 12345
  • name -> 이도연
  • age -> 20
  • score -> 50

String sql = "INSERT INTO CLOUDMEMBER
(ID, PW, NAME, AGE, SCORE) VALUES (?, ?, ?, ?, ?)";

  • 여기서 ? 인자란
    : 사용자로부터 어떤 데이터가 들어올지 모를 때 사용
    : 지정한 데이터 공간만큼 비워 놓고 실행하기 전까지 대기

전송하기 전에 sql문을 담아서 전송 할 수 있는 형식으로 변경
PreparedStatement psmt = conn.prepareStatement(sql);

? 인자 채우는 작업! (반드시 실행전에 진행할 것!!)

  • 데이터 바인딩(data binding) 작업
    • psmt.setString(1, id);
    • psmt.setString(2, pw);
    • psmt.setString(3, name);
    • psmt.setInt(4, age);
    • psmt.setInt(5, score);

4번 sql문 실행

SQL 구문에 따라 사용 메소드가 다르다.
(C : INSERT , R : SELECT , U : UPDATE , D : DELETE)

  • C,U,D -> int row = psmt.executeUpdate();
    (executeUpdate() : insert, update, delete 에만 사용한다.)

  • R -> rs = psmt.executeQuery();
    (executeQuery() : select에만 쓰고, 매개변수 없는 것 사용)


5번 자원반납

sql 구문에 따라 종류가 달라지며 크게

  • Connection
  • PreparedStatement
  • ResultSet

객체의 자원을 반납해줘야 한다.
그럼으로 try 영역 내 배치하기

  • Connection conn = null;
  • PreparedStatement psmt = null;
  • ResultSet rs = null;

  • psmt 와 conn 또한 예외가 발생할 수 있음으로 최종적으로 try-catch를 써주고 조건문(객체 != null)을 통해 사용 여부에 따라 자원을 반납 한다.


2. SQL에서 JAVA로 DATA 가져오기

SELECT문으로 테이블 조회시 필요한 정보를 가져오려면

  • rs = psmt.executeQuery();

rs을 참조하여 가져올 수 있다.

(예) 회원의 이름을 가져올 경우

  • tring name = rs.getString("name");

getString("컬럼명")으로 사용할 수 있다.
가져올시 데이터 타입에 맞춰 가져와야 한다.


인터페이스 이전 교육 내용 : 링크

profile
제가 한 번 해보겠습니다.

0개의 댓글