수업시간에 나온 코드를 이용해 실습을 진행중이다
DAO를 이용해서 오라클DB와 연결을하고 계정정보를 받아오던중 해당 문제 직면.
위 list가 null이라는 뜻이다. 아래 코드는 DAO코드이다
private AccountVO mapper(ResultSet rs) throws SQLException {
AccountVO row = new AccountVO();
row.setEmail(rs.getString("email"));
row.setIdx(rs.getInt("idx"));
row.setJoin_date(rs.getDate("join_date"));
row.setNick(rs.getString("nick"));
row.setUserid(rs.getString("userid"));
row.setUserpw(rs.getString("userpw"));
return row;
}
public List<AccountVO> selectAll() {
String sql = "select * from account order by idx desc";
System.out.println("selectAll문 실행1");
try {
conn = DriverManager.getConnection(url, user, password);
System.out.println("selectAll문 실행2");
stmt = conn.createStatement();
System.out.println("selectAll문 실행3");
rs = stmt.executeQuery(sql);
System.out.println("selectAll문 실행4");
List<AccountVO> list = new ArrayList<>();
System.out.println("selectAll문 실행5");
while (rs.next()) {
list.add(mapper(rs));
}
System.out.println("selectAll문 실행6");
return list;
} catch (SQLException e) {
System.out.println("selectAll 예외 : " + e.getMessage());
} finally {
close();
}
return null;
}
DAO코드중 문제가된 두함수만 들고왔다(너무길어서)
코드 오류를 찾기위해 println을 출력하였다.
콘솔 로그로 mapper(rs)에서 오류가 난걸 알 수 있다.
mapper()로 rs(Resultset)의 row들을 순서대로 넘겨준다.
mapper함수는 ResultSet의 row들을 AccountVO(valueObject)로 연결시켜준다.
코드를 보아하니 내가 갖고있는 테이블에 없는 열이름이 있다. 이게 문제인듯하다.
이건 내가 갖고 있던 Table이다. email, join_date라는 열이 없는것을 볼 수 있다.
강사님께 물어보니 Account테이블이 업데이트 되었다고 한다. 업데이트 해주자
잘된다.
nullPointer 어쩌고 저쩌고 나올때는 참조하고자하는 테이블이 존재하는가 확인한다.
존재한다면 참조할려는 데이터가 온전한가 그걸 확인해야한다.