[JDBC]
- 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 메소드
- JDBC 연결, SQL문 작성(try-catch문)
- SQL 문장실행 가능 판단: PreparedStatement 객체(conn.)
- SQL문장 속 ?에 값 입력하기: set자료형(? 순서, 컬럼명)(pst.)
- SQL문장 실행하기: excuteUpdate(pst.)
- 객체 종료하기(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 |