[ITWILL : JSP]JDBC활용 - JAVA에서 DB 정보 지우기 2가지방법

ITWILL학원 : 19강 JSP기초 BY 정규태강사

JDBC

  1. JDBC활용 - import쓰는 이유, form페이지로 받은 데이터를 DB에 insert하는 방법
  2. JDBC활용 - JAVA에서 DB 정보 지우기 2가지방법
  3. JDBC활용 - DB에서 고객정보를 불러와서 HTML테이블에 담기
  4. JDBC활용 - TIMESTAMP주의점, JDBC에서 데이터처리
  5. JDBC활용 - 회원정보수정페이지만들기
  6. JDBC활용 - 회원목록출력하는데 관리자는 빼고 출력하기, 자바 에러 두종류

JAVA에서 DB 정보 지우기

이름과 주민번호의 입력값이 DB데이터와 일치하면 회원탈퇴를 진행하는 코드를 만들어보자.

1. 사용자가 작성할 form페이지만들기

먼저 이름과 주민번호를 사용자로부터 입력받을 수 있는 deleteForm.jsp파일을 만든다

1
2
3
4
5
6
7
8
9
10
<fieldset>
<legend>회원정보수정</legend>
<form action="deletePro.jsp" method="post" name="fr">
<h3>본인확인정보</h3>
이름 <input type="text" name="name"><br>
주민번호 <input type="text" name="jumin1"> - <input type="password" name="jumin2"><br>
<p></p>
<input type="submit" value="탈퇴하기"><br>
</form>
</fieldset>

2. 사용자가 작성한 데이터를 불러와서 DB에 연결하기

  • deletePro.jsp에서 사용자데이터를 불러와서 DB데이터와 확인 후 탈퇴를 처리하는 코드를 작성하면 아래와 같다.

  • 순서는 아래와 같다

    1. 사용할 변수를 먼저 가져오기
    2. DB연결하기
    3. SQL쿼리작성하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%//1. 변수가져오기
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String jumin = request.getParameter("jumin1")+"-"+request.getParameter("jumin2");
%>

<%
//2.DB연결
final String DRIVER = "com.mysql.jdbc.Driver";
final String DBURL = "jdbc:mysql://localhost:3306/jspdb";
final String DBID = "root";
final String DBPW = "1234";

Class.forName(DRIVER);
Connection con = DriverManager.getConnection(DBURL, DBID, DBPW);
%>

3. sql작성 & pstmt객체생성

이때 두가지 방법이 있다.

3-1. 바로 delete하기

  • pstmt.executeUpdate();는 return값이 int이므로 int형 변수에 넣은 뒤 if조건문을 통해 진행여부를 html페이지에서 보여줄 수 있다.

  • 사용자입력값이 DB데이터와 일치하면

    • 이클립스 console창에 실행완료(수정완료) : 1 출력
    • html파일에서는 이름과 함께 정상적으로 탈퇴되었습니다라는 문구 출력된다.
  • 사용자입력값이 DB데이터와 불일치하면

    • 이클립스 console창에 실행완료(수정실패) : 0 출력
    • html파일에서는 탈퇴실패 문구 출력된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%
//3. sql작성 & pstmt객체생성
String sql = "delete from itwill_member where name=? && jumin=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, jumin);

int val = pstmt.executeUpdate();
if(val > 0){
System.out.println("실행완료(수정완료) : "+ val);
%><%=name %>님, 정상적으로 탈퇴되었습니다.<%
}else{
System.out.println("실행완료(수정실패) : "+ val);
%>탈퇴실패<%
}
%>

3-2. select 후 delete하기

  • pstmt.executeUpdate();는 return값이 int이므로 int형 변수에 넣은 뒤 if조건문을 통해 진행여부를 html페이지에서 보여줄 수 있다.

  • 사용자입력값이 DB데이터와 일치하는지 select로 확인후 일치하면

    • delete구문으로 데이터 삭제
  • 사용자입력값이 DB데이터와 일치하는지 select로 확인후 불일치하면

    • 삭제동작없이 이전페이지로 이동

DB에서 delete은 매우 신중한 작업이다.
따라서 정확한 데이터를 찾아 정확하게 처리해야하기때문에 전자보단 후자를 사용해야한다.

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
31
32
<% //3. sql작성 & pstmt객체생성
String sql = "select name jumin from itwill_member where name=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, name);

ResultSet rs = pstmt.executeQuery();
if(rs.next()){ //레코드셋에서 커서를 옮겨서 데이터가 있을 때 실행하겠다.
//이름과 주민번호가 있는 회원의 정보가 존재한다 =>삭제
if(jumin.equals(rs.getString("jumin"))){
sql = "delete from itwill_member where name=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.execute();
System.out.println("회원삭제완료");
}else{ //이름은 있지만 주민번호가 다른 경우 =>삭제동작없이 이전페이지로 이동
%>
<script type="text/javascript">
alert("주민번호 오류")
history.back(); //뒤로가기.
</script>
<%
}
}else{
//이름에 해당하는 주민번호가 존재하지않음 => 즉,비회원이므로 삭제동작없이 이전페이지로 이동
%>
<script type="text/javascript">
alert("이름 오류")
history.back(); //뒤로가기.
</script>
<%
}
%>