자바 웹 개발자가 될거야/JSP

[JSP] JSP와 DB연결 후 조회 / 수정 / 삭제해보기

whitz 2021. 11. 29. 17:39

 

- JSP와 데이터베이스를 연결시켜서 폼에서 데이터를 조회하고 수정하고 삭제하고자 할때 어떻게 연결시키는지 배웠다

- 회원정보 조회, 회원정보 수정, 회원탈퇴 기능을 구현할 수 있겠다 

 

< SELECT >

 

- 데이터베이스에 있는 데이터를 웹 폼에서 확인하고 싶을 때 사용

 

<%
	// 1. 드라이버 로드
	Class.forName("com.mysql.cj.jdbc.Driver");
	System.out.println("드라이버 로드 성공!");
	
	// 2. 디비 연결
	Connection con =
		DriverManager.getConnection("jdbc:mysql://localhost:3306/jspdb", "root", "1234");
	System.out.println("디비연결 성공!");
	
	// 3. sql 구문 작성 & pstmt 객체 생성
	String sql = "select * from itwill_member";	
	PreparedStatement pstmt = con.prepareStatement(sql);
	
	
	// 4. sql 구문 실행
	pstmt.executeQuery();
	
	String id = null;
	String pass = null;
	String name = null;
	
	//5. 데이터 처리
	while(rs.next()){ // 데이터 있을 때
		// rs.getXXXXX("컬럼명"); rs.getXXXXX(인덱스);
		// DB에서 가져오는 데이터타입에 따라서 메서드변경	
			
		id = rs.getString("id");
		System.out.println(id);
		pass = rs.getString("pass");
		out.println(pass);
		name = rs.getString("name");		
		out.println(name);		
	}
	
%>

<hr>
	아이디 : <%=id %>

 

- 데이터입력폼에 test 아이디를 입력하여 전송했고

 

- 그 결과를 select해서 보여줌

 

 

①  SQL 구문 실행메서드

 

- .executeQuery() : SELECT - DB 동작이 바뀌지 않고 보여주는 용도

- .executeUpdate() : INSERT, UPDATE, DELETE - DB가 변하는 구문일 때

 

- Select는 ResultSet 쿼리 

 

 

< update >

 

- 기존에 있던 데이터들을 수정하고 싶을 때 사용하면 된다

- SQL의 Update 쿼리 사용했음

 

<body>
	<h1>WebContent/jsp5/updateForm.jsp</h1>
	<!-- 
		사용자의 ID, PASS 입력, 수정할 이름 입력
		updatePro.jsp 페이지로 정보 전달
	 -->
	 
	 <form action="updatePro.jsp" method="post">
	 	아이디 : <input type="text" name="id"><br>
	 	비밀번호 : <input type="password" name="pass"><br>
	 	수정할 이름 : <input type="text" name="name"><br>
	 	
	 	<input type="submit" value="수정하기"><br>		
	 
	 </form>
	
</body>

 

<body>
	<h1>WebContent/jsp5/updatePro.jsp</h1>
	
	<%
	  //한글처리 (post 방식)
	  request.setCharacterEncoding("UTF-8");
	  
	  // 전달되는 파라미터값 저장(id, pass, name)
	  String id = request.getParameter("id");
	  String pass = request.getParameter("pass");
	  String name = request.getParameter("name"); 
	  

		// 1. 드라이버 로드
		Class.forName("com.mysql.cj.jdbc.Driver");
	
		// 2. 디비 연결
		Connection con =
			DriverManager.getConnection("jdbc:mysql://localhost:3306/jspdb", "root", "1234");
	
		// 3. sql 구문 작성 & pstmt 객체 생성
		String sql = "update itwill_member set name=? where id=? and pass=?";		
		PreparedStatement pstmt = con.prepareStatement(sql);
		
		// ?
		pstmt.setString(1, name);
		pstmt.setString(2, id);
		pstmt.setString(3, pass);
	
		// 4. pstmt 실행
		pstmt.executeUpdate();
		%>
		<h2> 회원 정보(name) 수정완료! </h2>	
	
</body>

 

 

< delete >

 

- 기존에 있던 데이터를 삭제하고 싶을 때 사용하면 된다

- SQL의 DELETE 쿼리 사용했음

 

<body>
	<h1>WebContent/jsp5/deleteForm.jsp</h1>
	
	<!-- 
		ID/PASS 입력받아서 deletePro.jsp 전달	
	 -->
	 
	<fieldset>
	<legend> 회원 탈퇴 </legend>  
	 <form action="deletePro.jsp" method="post">
	 	아이디 : <input type="text" name="id"><br>
	 	비밀번호 : <input type="password" name="pass"><br>
	 	
	 	<input type="submit" value="수정하기"><br>	 
	 </form>	
	</fieldset>
</body>

 

<body>
	<h1>WebContent/jsp5/deletePro.jsp</h1>
	
	
	<%
	  //한글처리 (post 방식)
	  request.setCharacterEncoding("UTF-8");
	  
	  // 전달되는 파라미터값 저장(id, pass, name)
	  String id = request.getParameter("id");
	  String pass = request.getParameter("pass"); 
	  

		// 1. 드라이버 로드
		Class.forName("com.mysql.cj.jdbc.Driver");
	
		// 2. 디비 연결
		Connection con =
			DriverManager.getConnection("jdbc:mysql://localhost:3306/jspdb", "root", "1234");
	
		// 3. sql 구문 작성 & pstmt 객체 생성
		// String sql = "delete from itwill_member where id=? and pass=?";
		String sql = "select pass from itwill_member where id=?";
		PreparedStatement pstmt = con.prepareStatement(sql);
		
		// ?
		pstmt.setString(1, id);
	
		// 4. pstmt 실행
		ResultSet rs = pstmt.executeQuery();
		
		// 5.
		if(rs.next()){ 
			// 아이디가 있다.
			if(pass.equals(rs.getString("pass"))){
				// 본인 - 탈퇴
				// 3. sql(delete 구문)
				sql = "delete from itwill_member where id=?";
				pstmt = con.prepareStatement(sql);
				pstmt.setString(1, id);
				
				// 4. sql 실행
				pstmt.executeUpdate();
				System.out.println("삭제 성공!");
				
			}else{
				// 비밀번호 에러
				out.println("비밀번호 에러");
			}
		}else{
			// 아이디가 없다.
			out.println("아이디 없음 !!");
		}
		%>
	
</body>

 

 

 

 

< DB Export/Import >

 

- MySQL 워크밴치에 Schemas 탭이 아닌 그 옆 Administration 탭에서 DB Export와 Import가 가능하다

- DB를 파일로 저장해서 옮기고 싶을 때 사용하면 된다

 

 

① Data Export : DB 파일 내보내기

 

- 스키마 선택 후 내보내고 싶은 테이블 선택

- 덤프 구조와 데이터뷰 선택

- 파일로 내보내기

- 스키마 구문 포함하기 체크

 

 

② Data Import : 데이터 가져오기

 

 

- 파일로 가져오기 (파일 저장한 위치로 설정)

- 타겟 스키마 설정

- 덤프 구조와 데이터로 가져오기