executeQuery()
-
쿼리를 실행하고, 결과를 ResultSet 객체(Object)로 반환한다.
-
반환된 ResultSet 객체를 통해 결과를 가져올 수 있다.
-
SELECT는 하나 이상의 레코드(Record)를 조회하게 되는데 이 때 결과 집합을 반환한다.
-
ResultSet은 결과 세트에 대한 커서를 포함하므로 사용자가 쿼리(query) 결과를 반복적으로 가져올 수 있다.
-
커서는 데이터베이스에서 조회된 결과 집합에서 현재 위치를 나태내는 포인터로 이를 이용해 하나의 행(레코드(Record))을 읽어오고, 디음 행(레코드(Record))으로 이동하여 원하는 레코드를 순차적으로 탐색할 수 있다.
예시
-
회원의 이메일을 입력해서 해당 회원의 정보를 가져오는 기능을 구현했다.
-
DAO(Data Access Object)에서는 sql을 실행하고 해당 결과를 DB로 반환받는다.
-
이 때 SELECT문은 여러 레코드(Record)를 조회하면서 결과 집합을 반환하기 때문에 executeQuery()사용해 실행하고 if(rs.next()) 를 통해 다음 결과가 있을 경우 커서를 열(속성(Attribute) 혹은 필드(Field))을 따라 하나하나 이동해가며 member 객체(Object)에 저장하고 반환하게 된다.
Java
- 아래 코드는 위의 코드 sql 부분 해석이다.
SQL
-
SELECT 절은 MEMBER_EMAIL, MEMBER_NICK, MEMBER_TEL, MEMBER_ADDR 및 ENROLL_DT(등록 날짜) 열을 선택한다.
- ENROLL_DT(등록 날짜)는 TO_CHAR 함수를 사용하여 'YYYY"년" MM"월" DD"일"' 형식으로 변환된다.
- AS 키워드를 사용하여 ENROLL_DT(등록 날짜)를 ENROLL_DATE로 별칭 지정한다.
-
FROM 절: 회원 테이블(MEMBER)에서 데이터를 선택합니다.
-
WHERE 절은 다음의 조건을 만족하는 행을 선택한다.
- 회원 이메일(MEMBER_EMAIL)이 주어진 이메일과 일치하는지 확인한다.
- 탈퇴 여부(SECESSION_FL)가 'N'(탈퇴하지 않음)인지 확인한다.
- 이때 SQL 쿼리의 WHERE 절에서 사용된 ?(Placeholder)는 파라미터 바인딩을 나타내며, 이 값은 실행 시점에 구체적인 값으로 대체되어 실행된다.