hahn

19일차 connection + Null Pointer Exception 본문

개발 공부/JAVA

19일차 connection + Null Pointer Exception

hahn 2021. 4. 10. 13:23
728x90
반응형

학원에서 db 배운다고 mysql, heidisql 설치했다.

루트로 로그인 후 db생성하고 일반사용자 계정 생성 및 접근권한 부여했다.

일반사용자 계정 로그인 후 table생성하고 입력, 수정, 삭제, 조회해봤다.

일단 테이블 생성 문법에 대해 따로 배우진 않았지만

기본적으로 변수와 데이터타입(가변길이) 지정해두고 추가적으로 NOT NULL과 같이 값을 비우지 못하게하는 등

추가 설정 하는 듯 나중에 자세히 배우면 다시 포스팅해야겠다.

이후 프로그램 순서는

드라이버 로딩하고

Class.forName("com.mysql.jdbc.Driver");

Connection객체로 DB연결한다.

Connection conn = null;
String jdbcDriver = "jdbc:mysql://localhost:3306/DB이름?" +
				"useUnicode=true&characterEncoding=euckr";
		String dbUser = "DB아이디";
		String dbPass = "DB패스워드";
		
		conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);

쿼리 실행을 위해 PreparedStatement 객체를 생성한다.

PreparedStatement pstmt = null;
String m_id = request.getParameter("m_id");
String m_pw = request.getParameter("m_pw");
String m_level = request.getParameter("m_level");
String m_name = request.getParameter("m_name");
String m_email = request.getParameter("m_email");
pstmt = conn.prepareStatement(
				"INSERT INTO tb_member VALUES (?, ?, ?, ?, ?)");
		pstmt.setString(1, m_id);
		pstmt.setString(2, m_pw);
		pstmt.setString(3, m_level);
		pstmt.setString(4, m_name);
		pstmt.setString(5, m_email);

insert 쿼리문장을 예로 들었다. setString메서드는

입력받은 int값번째 ?에 getParameter로 받아온 값을 저장한다.

이후 쿼리 실행하고 결과 사용 뒤, PreparedStatement객체 종료 후 Connection 객체를 종료한다.

쿼리문장은 예로 든 것을 제외하고도 UPDATE, DELETE, select 등이 있다.

일단 이 정도만 알고 있으라고 하셨는데 시간 남으면 좀 더 찾아봐야겠다.

Class.forName()부터 천천히 다 뜯어봐야지


jsp 실행하다가 500에러가 떠서 Null Pointer Exception이 계속 떠서 찾아보다가 결국 해결했다.

문제는 객체 생성도 안하고 해당 클래스를 통해 객체에 접근하려니 생기는 오류였다.

index창에서 session값을 얻어 권한별 다른 창을 보여주려 했는데 로그인도 하지 않은 상태에서

session값을 받으려고 했던 것이 문제였다. 그래서 null일 때는 로그인창이 나오게 하고

객체가 생성됐을 때는 권한별로 다른 창이 나오게 했다.

728x90
반응형