본문 바로가기
Java & Kotlin/Backend

8. ResultSet

by heekng 2021. 1. 19.
반응형
 

자바에서 SELECT 등의 조회 쿼리문을 실행하면 커맨드창이 아니기 때문에 바로 정보를 가져오기 어렵고, 이용하기에도 어려움이 따릅니다.

이 때 사용하게 되는 클래스가 ResultSet 클래스입니다.


1. java.sql.ResultSet

ResultSet 클래스를 이용하려면 값을 조회하여야 합니다.

이전 포스트에서 살펴보았던 execute 메서드 중 executeQuery() 메서드는 이용할 때 ResultSet으로 받아와야 한다고 했습니다.

1) ResultSet의 형태는

위와 같이 TABLE 형태와 흡사합니다.

2) 받아온 ResultSet는 자바의 list에서 이용했던 Iterator과 유사한 방법으로 자료를 꺼낼 수 있습니다.

next() 메서드로 값이 있는지 없는지 확인하며 다음 레코드를 받아오고, get...() 메서드를 이용하여 값을 얻어옵니다.

또한, 여러 행이 있을 경우에는 반복문을 이용하여 값들을 받아올 수 있습니다.

get...() 메서드는 getInt(), getString() 등 과같이 받아오는 정보의 자료형에 맞추어 이용하고,

getInt(ex_num) 이라는 메서드를 이용한다면 해당하는 레코드의 ex_num항목에 해당하는 자료의 자료형이 Int 형이여야 합니다.

이용과정은

next() [다음 레코드 x가 있는지 확인] -> get...(y) [x의 y항목 정보를 받아온다] 라고 생각하면 쉽게 이해할 수 있습니다.

3) 예시

이 ex_table을 자바에서 조회한다면 다음과 같이 코드를 작성할 수 있고

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

public class JdbcTest01 {

public static void main(String[] args) {

String id = "ex_user";

String password = "expassword";

String url = "jdbc:oracle:thin:@localhost:1521:xe";

Connection cn = null;

PreparedStatement ps = null;

boolean sw = true;

Scanner sc = new Scanner(System.in);

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

 

cn = DriverManager.getConnection(url, id, password);

 

ps = cn.prepareStatement("SELECT * FROM ex_table"); // ex_table 조회

 

ResultSet rs = ps.executeQuery(); // 쿼리를 실행함과 동시에 ResultSet에 저장한다.

 

while(rs.next()) { // 레코드가 없을 때까지 반복한다.

int num = rs.getInt("ex_num"); // 레코드의 번호를 num에 저장

String name = rs.getString("ex_name"); // 레코드의 이름을 name에 저장

String date = rs.getString("ex_date"); // 레코드의 날짜를 date에 저장

System.out.println(num+"번 "+name+"학생의 저장날짜는: "+date+"입니다.");

}

 

}catch(Exception e) {

e.printStackTrace();

}finally {

try {

if(ps != null) {

ps.close();

}

if(cn != null) {

cn.close();

}

}catch (Exception e) {

e.printStackTrace();

}

}

}

}

실제 실행 시에

위와 같이 원하는 정보를 받아올 수 있습니다.

또한, 쿼리문을 작성하는 방법에 따라

위와 같이 내림차순 등으로 편리한 방법대로 받아오거나, 원하는 사람, 레코드의 정보만 받아올 수 있습니다.

반응형