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

SeoYehJoon·2023년 9월 27일
0

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






profile
책, 블로그 내용을 그대로 재정리하는 것은 가장 효율적인 시간 낭비 방법이다. 벨로그에 글을 쓸때는 직접 문제를 해결한 과정을 스크린샷을 이용해 정리하거나, 개념을 정리할때는 최소2,3개소스에서 이해한 지식을 정리한다.

0개의 댓글