JDBC 2편

Dev StoryTeller·2020년 12월 5일
0
post-thumbnail

이번 편에서는 ResultSet에 대해 알아보려고 한다.

결과값을 담는 ResultSet에 대해 알아보자!


1.ResultSet

앞서 설명했듯 결과값을 담는 객체이다.

그런데 먼저 이름을 살펴보자. Set? 설마 자료형의 Set?
그렇다! 그것과 비슷하다. 정말로 그 Set인지는 모르겠지만..

암튼 이름이 Set인 만큼, 값을 꺼내오는 방식도 비슷하다.

다만 ResultSet의 경우, 테이블을 생각하면 편하다.
ResultSet에는 다음처럼 결과값을 담는다고 하였다.

ResultSet rs = stat.excuteQuery("SELECT * FROM USER");

이렇게 담았을 경우, ResultSet이 가리키는 위치는 다음과 같다.
즉, 0번째 줄을 가리키고 있는 것이다.
때문에 다음 줄을 가리키기 위해, next() 메서드를 수행한다.

while(rs.next()) {

next() 메서드는 다음 줄이 있으면 TRUE를 반환하고 넘어가고, 없으면 FALSE를 반환하는 메서드 이다.

지금은 다음줄이 있으므로 다음과 같이 된다.그럼 이제 값을 꺼내와야 하는데, 어떻게 꺼내올 수 있을까?
값은 테이블 속성의 데이터 형순서를 매겨 가져온다.

가령 Id 속성은 int형이고 1번째이므로, 이렇게 가져온다.

while(rs.next()) {
      rs.getInt(1);
}

그렇다면 name은? String형이고 2번째이므로 다음과 같다.

while(rs.next()) {
      rs.getInt(1);
      rs.getString(2);
}

이런 식으로 모두 작성해주면 다음과 같다.

while(rs.next()) {
      rs.getInt(1);
      rs.getString(2);
      rs.getString(3);
}

2. 객체에 담기

하지만 rs는 일시적인 객체이다. DB 작업이 끝나면 폐기되야 한다.
따라서 USER 테이블에 맞게 User 클래스를 생성해주고,
해당 객체에 담을 수 있도록 한다.

// User 클래스 작성
class User {
     private int id;
     private String name;
     private String description;
     
     /*
      * getter/setter 메소드들
      */
}
-------------------------------------------
// User 객체 생성
User user = new User();

// rs에서 값을 꺼내며, User 객체에 담음
while(rs.next()) {
      user.setId(rs.getInt(1));
      user.setName(rs.getString(2));
      user.setDescription(rs.getString(3));
}

그리고 여러 User 데이터를 담아야 하므로, List를 생성하여 값을 저장한다.
즉, 최종적으로 다음과 같다.

// User 클래스 작성
class User {
     private int id;
     private String name;
     private String description;
     
     /*
      * getter/setter 메소드들
      */
}
-------------------------------------------
// User 객체 생성
User user = new User();
// 여러 User 데이터들을 담기 위한 리스트 생성
List<User> userList = new ArrayList<>();

// rs에서 값을 꺼내며 리스트에 담음
while(rs.next()) {
      user.setId(rs.getInt(1));
      user.setName(rs.getString(2));
      user.setDescription(rs.getString(3));
      
      // User 데이터 하나를 리스트에 추가
      userList.add(user);
}

3. 결론

이번 편은 ResultSet을 어떻게 사용하는지에 대해 알아보았다.
사실 간단한 내용인데, 적다보니 길어져서 내용을 줄였다...ㅠㅜ

다음 편은 정말로 CRUD에 대해 알아보자!

profile
개발을 이야기하는 개발자입니다.

0개의 댓글