[문제해결] java.lang.NullPointerException (DAO DB연결)

SeoYehJoon·2023년 9월 27일

웹개발-JSP

목록 보기
9/19

서론

수업시간에 나온 코드를 이용해 실습을 진행중이다
DAO를 이용해서 오라클DB와 연결을하고 계정정보를 받아오던중 해당 문제 직면.


위 list가 null이라는 뜻이다. 아래 코드는 DAO코드이다



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 어쩌고 저쩌고 나올때는 참조하고자하는 테이블이 존재하는가 확인한다.
존재한다면 참조할려는 데이터가 온전한가 그걸 확인해야한다.






0개의 댓글