ResultSet은 statement.excuteQuery(sql)을 통해 실행되서 나온 Select결과를 저장하는 객체
Table
| id | password | nickName |
|---|---|---|
| admin | pass | admin |
| hello | world | nickName |
public static void main(String[] args) {
try {
String url = "jdbc:mariadb:://localhost:3306/test";
DriverManager.registerDriver(new org.mariadb.jdbc.Driver());
DriverManager.getDriver(url);
Connection con = DriverManager.getConnection(url, "id", "password");
Statement stmt = con.createStatement();
ResultSet res = stmt.executeQuery("SELECT * FROM table_name");
while (res.next()) {
System.out.print(res.getString(1) + "\t");
System.out.print(res.getString(2) + "\t");
System.out.print(res.getString(3) + "\n");
}
}
catch (SQLException e) {
e.printStackTrace();
}
}
# 출력
admin pass admin
hello world nickName
next()는 2가지 일을 하는 데
1.다음 Column데이터가 존재하는 지 확인하여 결과를 반환
| id | password | nickName |
|---|---|---|
| admin | pass | admin |
| hello | world | nickName |
굳이 말하자면 맨처음 커서는 Header쪽에 즉, 도메인에 커서가 가있는 모습이다.
그래서 만약 res.next()를 안하고 접근을 하게 되면
java.sql.SQLDataException: wrong row position
예외를 터트리게 된다.
| getMethod |
|---|
| getInt |
| getString |
| getBoolean |
| getDate |
| getDouble |
| getFloat |
| getDate |
| getLong |
| getTime |
| getTimestamp |
| getRowId |
| ..등등.. |
인자 값 차이

int : index(int)를 기준으로 Data를 가져옴, index번호는 1부터 시작
String : Column의 이름(String)을 기준으로 Data가져옴