JAVA

[JAVA]16. JDBC

CodeJaram 2023. 6. 19. 08:31

[JDBC]

 

  1. JDBC(JAVA Database Connectivity)
  • Java에서 Database에 접속할 수 있도록 하는 API
  • API(Application Interface): 프로그램과 프로그램의 상호작용을 도와주는 매개체

  • 연결과정

[실습]회원가입, 로그인 기능 구현

 

[DB]

  • DB워크시트에 회원정보 작성

    -SELECT: 회원조회(로그인)

    -INSERT: 회원가입

    -UPDATE: 회원정보 수정

    -DELETE: 회원정보 삭제

 

  • DB 워크시트를 JAVA 프로젝트 내에 저장



 [JAVA] 

1. 회원정보 입력받기(Scanner 도구): 입력값을 id, pw, name, age 변수에 저장

2. JDBC 연결순서

  1)Oracle 연결에 필요한 외부라이브러리(ojdbc6 jar) 불러오기(import)

  -ojdbc6 파일경로: C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib

  -library 폴더에 복사 붙여넣기

 

2. ojdbc6.jar 파일에서 JAVA와 DB의 연결통로를 만들어줄 JDBC Driver 실행

 

  • Class.forName(“파일경로”)

        -예외:classnotFoundException

  • try~catch문->예외처리

     -try: 일단 코드가 실행되는 영역, 에러가 없을 때 try 밖 here부분의 코드 실행

     -catch: 실행해서 에러가 났을 때 실행되는 영역

     -Exception(변수명 e): 어떤 오류가 났는지 알고 있는 객체

 

  3)DB에 접속하기 위한 보안키 입력

 4)DriverManager 통해 DB 접속하기

  • DriverManager.getConnection(dburl, dbuser, dbpw);

 

-예외: SQLException e

  • 접속여부에 따라 출력문 작성

    -DB 접속 성공 시 Connection 객체로 반환

   -DB 접속 실패 시 NULL로 반환

 

5)SQL 문장 준비(INSERT, SELECT, UPDATE, DELETE)

-예외: SQL Exception



  • PrepareStatement: 문장 실행 가능한지 판단(오타, 문법에러 등)

-리턴타입 PreparedStatement

 

  • set자료형(순서, 컬럼): ? 변수에 값 넣기

 

6)SQL 실행하기

[INSERT, UPDATE, DELETE일 때]

  • executeUpdate: 테이블이 변화할 경우 실행하기

-리턴타입: int(실행에 성공한 행의 개수 반환)

 

[SELECT일 때]

  • executeQuery : 테이블이 변화가 없을 경우 실행하기

      -리턴타입 ResultSet(테이블 형태)

  • ResultSet: 커서객체, 행 한 줄만 반환next(): 다음 줄로 커서를 옮기는 메소드

    -리턴타입: boolean 

    -데이터가 있으면→true, 데이터가 없으면→false

 

  • true 일 때 값 불러오기 get(인덱스번호 or 컬럼명)

     * 인덱스번호→sql문장의 실행결과에서 컬럼의 순서

  •    값 출력하는 출력문 작성

 

(전체 조회)while문

-모든 데이터를 출력하기 위해 데이터가 없을 때까지  반복

 

 

테이블에서의 컬럼순서가 아닌 실행한 결과에서 컬럼 순서를 작성한다.

 

(부분 조회) if문


7. 객체 종료하기

  • finally{ }: 가장 마지막에 실행되는 영역(try, catch문에서 오류가 나도 실행된다.)
  • 객체 종료하기: 객체 연결한 역순으로 객체 종료하기

      객체 변수명.close();

 

-if문: 객체가 null이 아닐 때만 종료하기

-예외: try~catch문 작성하기



  • 객체 전역변수로 만들기

[INSERT, UPDATE, DELETE일 때] Connection conn; PreparedStatement pst;

+executeUpdate를 반환한 결과를 저장한 변수→try문 밖으로 선언

 

[SELECT일 때]Connection conn; PreparedStatement pst; ResultSet rs



 

[MVC 패턴으로 JDBC 만들기]

 

1. Model(DAO, DTO)

  1)DAO(Database Access Object)

  • CONNECTION 메소드: JDBC 연결하기
  •  INSERT, UPDATE, DELETE 메소드
  1. JDBC 연결, SQL문 작성(try-catch문)
  2. SQL 문장실행 가능 판단: PreparedStatement 객체(conn.)
  3. SQL문장 속 ?에 값 입력하기: set자료형(? 순서, 컬럼명)(pst.)
  4. SQL문장 실행하기: excuteUpdate(pst.)
  5. 객체 종료하기(finally): CONNECTION 메소드 
  • SELECT 메소드: excuteQuery, next()
  • CLOSE 메소드: 객체 종료하기(ResultSet, PreparedStatement, Connection 객체)

 

  2)DTO: Data Transfer Object(=Value Object, VO)

  -변수들을 하나의 단위로 묶는 객체 생성

  -설계도: 필드(입력 변수), 메소드(생성자, getter) 작성

 

2. Controller

실행결과가 있으면 원하는 정보를 출력하는 코드 작성

 

3. View(main)

Scanner 도구-사용자가 기능 선택, 정보 입력

사용자가 정보 입력

각 기능에 따라 출력문 작성

 

'JAVA' 카테고리의 다른 글

[JAVA]15. 추상화&인터페이스  (0) 2023.06.16
[JAVA]14.디자인 패턴  (0) 2023.06.15
[JAVA]13.상속  (0) 2023.06.12
[JAVA]12. 생성자  (0) 2023.06.11
[JAVA]11. 객체지향 프로그래밍  (0) 2023.06.10