일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 시뮬레이션
- 연결리스트 정렬
- 수학
- 연결리스트 중복제거
- LeetCode 83 c언어
- 임의 정밀도 / 큰 수 연산
- 해시를 사용한 집합과 맵
- 이분 탐색
- 다이나믹 프로그래밍
- KMP알고리즘
- 유클리드 호제법
- 조합론
- 큐
- 실패함수
- 큰 수 연산
- 프로그래머스
- 문자열제곱
- 문자열
- 브루트포스 알고리즘
- Queue
- 자료 구조
- LeetCode Remove Duplicates from Sorted List in c
- 사칙연산
- LeetCode 83번
- 재귀
- 정수론
- 스택
- 구현
- 별 찍기
- 정렬
- Today
- Total
hahn
19일차 connection + Null Pointer Exception 본문
학원에서 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일 때는 로그인창이 나오게 하고
객체가 생성됐을 때는 권한별로 다른 창이 나오게 했다.
'개발 공부 > JAVA' 카테고리의 다른 글
[JAVA] List.sort() 정렬(오름차순, 내림차순) - Comparator 이용 (0) | 2021.09.12 |
---|---|
20일차 executeQuery, next (0) | 2021.04.10 |
11~12일차 레퍼런스 데이터 타입 사용 실습 (0) | 2021.04.07 |
10일차 서로 다른 클래스에서 메서드 호출 선언 (0) | 2021.04.07 |
7일차 return (0) | 2021.04.07 |