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가져옴