FireDrago
[Servlet] ResultSet.next( ) 중복 호출 본문
public ArrayList<member> getallmember() {
System.out.println("겟올멤버 작동");
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "1234";
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url,user,password);
String sql = "select * from member";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
ArrayList<member> allmember = new ArrayList<>();
System.out.println(rs.next());
while (rs.next()) {
String id = rs.getString("id");
String pw = rs.getString("password");
System.out.println(id);
System.out.println(pw);
member mb = new member();
mb.setId(id);
mb.setPassword(pw);
allmember.add(mb);
}
......... 생략..........
database 를 통한 간단한 crud 구현중에 2시간동안 해결안되는 문제가 발생했었다.
이 부분을 자세히 보자
System.out.println(rs.next());
while (rs.next()) {
데이터베이스에서 받은 데이터 ResultSet rs 변수에 값이 잘 담겼는지 확인하기 위해 프린트를 찍은상태이고,
다음 while 문에서는 rs.next로 하나씩 값을 꺼내오도록 되어있다.
그러나 문제는 rs.next 를 처음 호출해서 커서가 이미 뒤로 간 상태인데
while문에서 한번더 두번 호출하여 값이 담기지 않는 문제가 발생했다.
rs.next( ) 는 한번만 쓰자!!
'오류노트' 카테고리의 다른 글
| [Servlet] 중복맵핑 에러 javax.naming.NamingException (0) | 2023.07.07 |
|---|---|
| [Servlet] SQL 문법오류 (java.sql.SQLSyntaxErrorException) (0) | 2023.07.07 |
| 재귀함수의 return 문 생략 (0) | 2023.06.05 |
| [JavaScript] 자바스크립트 내장함수명 사용 (0) | 2023.05.30 |
| [java] ArrayIndexOutOfBoundsException (0) | 2023.05.19 |
