JDBC 2편


이번 편에서는 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에 대해 알아보자!

좋은 웹페이지 즐겨찾기