본문 바로가기
수업 일지/JDBC

28일차 - SELECT/DISTINCT/UPDATE/DELETE

by 쿠쿠씨 2022. 2. 10.
반응형

JDBC - SELECT

 

ResultSet 인터페이스

→ 자바에서 SELECT문을 사용하여 결과를 반환받을 때 사용합니다.

→ ResultSet 객체는 커서를 가지고 있고, 최초의 위치는 첫 행의 이전입니다.

→ next() 메소드는 다음 행이 존재하면 true를 반환하고 커서를 다음 행으로 이동시킵니다.

→ 다음 행이 존재하지 않으면 false를 반환합니다.

→ getXXX 메소드로 다른 클래스의 필드 값을 가져올 수 있습니다. (getString, getInt, getDate, ...)

→ getXXX(열_이름) : 커서가 있는 행의 열_이름에 해당하는 데이터를 가져옵니다. 

→ getXXX(숫자) : 숫자는 컬럼 순서이고 1번부터 시작합니다.  

 

예제1: SelectTest1

→ ResultSet 객체는 SELECT문 실행시 조회되는 테이블의 데이터를 참조합니다.

→ SELECT 문에서는 executeQuery 메소드를 사용합니다. (ResultSet 타입 반환)

→ rs.next()는 다음 행이 있으면 true, 없으면 false를 반환합니다.

→ getXXX 메소드로 커서 위치 바로 앞의 행의 데이터를 가져옵니다.

 

예제2: SelectTest2

→ while문으로 행의 데이터를 출력합니다.

→ String 클래스의 format 메소드로 서식을 부여합니다.

→ String.format("%숫자s", 문자열) : 숫자만큼의 칸에 부호가 -면 왼쪽부터, +면 오른쪽부터 문자를 채웁니다.

 

 

예제3: SelectTest3

→ Scanner 클래스로 변수에 입력값을 저장합니다.

→ setString 메소드로 입력값을 sql문의 ? 에 대입합니다.

 

→ rs.next()가 true이면 있는 ID, false이면 없는 ID입니다.

 

예제 : VO 클래스

 

→ VO: Value Object, 여러 개의 데이터를 저장하는 것이 목적입니다.

→ Custom# 테이블의 컬럼을 저장할 필드로 구성된 클래스입니다.

→ 구성요소 : 필드(컬럼), 기본 생성자, 커스텀 생성자, getter/setter, toString메소드(오버라이드) 

 

예제 : VO Test

 

VO 클래스를 이용하여 List에 테이블을 저장하여 SELECT  문으로 조회합니다.

→ List에 Custom 객체를 생성하여 행을 저장합니다

→ 방법1) 커스텀 생성자를 이용하여 인자에 getXXX 메소드를 대입한 후 List에 add합니다.

→ 방법 2) Custom 객체를 생성하고 setter 메소드로 필드 값을 저장한 후 List에 add합니다.

 

예제 : ID 중복 확인

 

→ idCheck 메소드 : !rs.next가 true이면 result는 true 즉, ID가 존재하지 않으면 true 중복되면 false를 반환합니다.

 

→ while 문으로 ID가 존재하지 않으면(idCheck(id)=true) break문으로 반복문을 빠져나와 ID를 만들 수 있습니다.

→ ID가 이미 존재하면 다시 while 문을 반복합니다.

 

 

DISTINCT

 

→ 중복된 결과를 제거하고 1개만 출력합니다.

 

→ DISTINCT한 pcode를 출력합니다.

 

예제: UpdateTest

→ Scanner 클래스로 ID를 조회합니다.

→ idCheck 메소드로 존재하는 ID인지 확인합니다.

→ ID가 존재한다면 email을 setXXX 메소드로 입력받은 email로 변경합니다.

→ idCheck 메소드: ID가 존재하지 않으면 true, 존재하면 false입니다. 

 

예제: DeleteTest

→ Scanner 클래스로 ID를 조회합니다.

→ idCheck 메소드로 존재하는 ID인지 확인합니다. (존재하면 !idCheck(custom_id)는 true)

→ ID가 존재한다면 id를 삭제합니다.

반응형

댓글