ArrayListBook과 같이 Class 타입 형으로 지정한 후, 다시 받아올 때의 문제점..아시는 분..?
허우룩
jsp 페이지에서 책(예를 들자면..) 정보를 읽어오기 위하여, 서버 단에서 돌아가는
DAO 파일을 만들었습니다.
그리고 그 파일에서
abcDAO.java
public ArrayListBook selectBookList(){
...
ArrayListBook XXXArr ; //Book은 Bean 클래스입니다.. 게터와 세터만 있죠...
rs =pstmt.ExecuteQuery();
int i = 0;
while(rs.next()){
Book.setXXAString(rs.getString(1));
Book.setXXBString(rs.getString(2));
XXXArr.(i++, Book);
}
...
}이런 식으로 넣어주었습니다.
그런데, 문제는 제가 웹에서 테스트페이지를 돌려보는데,
abcDAO ad = new abcDAO();
ArrayListBook abcArr = new ArrayListBook();
abcArr = ad.selectBookList();
for(int i=0;iabcArr.size();i++){
Book b;
b = abcArr.get(i);
b.getXXAString(); //웹 페이지로 출력시, 첫번째 Row의 데이터는 출력안되고 두번째 데이터만 두번 출력됨
b.getXXBString(); //웹 페이지로 출력시, 첫번째 Row의 데이터는 출력안되고 두번째 데이터만 두번 출력됨
}
이렇게 해서 결과를 가져오면두 개의 Row를 넣어서 테스트 해보았는데, 마지막 2번째의 로우만 2번 출력되는 문제가 발생했습니다.
왜 이런 증상이 나타나는지 아시는분?
이것이 문제가 되어서 어쨋든, iterator 와 List를 이용해서 해결하긴 했지만..
영 찝찝하네요.. 이거 증상 왜 이런지 아시는 분 설명 좀 부탁드립니다.
-
조으다
abcdao.java 파일에서 book이란 객체를
루프( \while(rs.next()){}\ )밖에서 생성하셔서 쓰신듯 합니다.
수다님의 말씀대루..
루프안에서 생성하셔서 arrlist에 add하시구 자동소멸 형식으로 한번 해보세요 ^^ -
말글
감사합니다. 새로운 인스턴스를 만들어서 해보아야겠네요. 그렇게도 해보았던걸로 기억되긴 하지만,
제가 먼가 실수한게 있는듯...
그리고 add는 제가 여기에 생각나는데로 쓰다보니, 빼먹었습니다.^^; -
영미
제너릭을 사용하신게 문제가 아닌듯하네요. 아래 소스가 문제가 있는듯하네요;;
while(rs.next()){
Book.setXXAString(rs.getString(1));
Book.setXXBString(rs.getString(2));
XXXArr.(i++, Book); // 문법도 쫌 이상함.. add 메소드를 써야하는거 아닌가 ㅡ,ㅡ;
}
아래 같이..
Book book;
while(rd.next()){
book