KDT/WEB

231211 WEB - JSP9(데이터베이스 연결)

001cloudid 2023. 12. 11. 17:40
728x90

6. 데이터베이스 연결

update

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp3/update.jsp</title>
</head>
<body>
<h1>jsp3/update.jsp</h1>
<h1>학생수정화면</h1>
<form action="updatePro.jsp" method="get">
학생번호 : <input type="text" name="num"><br>
학생이름: <input type="text" name="name"><br>
<input type="submit" value="학생정보수정"><br>
</form>
</body>
</html>

 

<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp3/updatePro.jsp</title>
</head>
<body>
<%
//utf-8 설정
request.setCharacterEncoding("utf-8");

//사용자가 입력한 정보를 http가 들고 서버에 전달 → 서버에 request 내장 객체 저장
int num = Integer.parseInt(request.getParameter("num"));
String name = request.getParameter("name");

// 1단계 : Driver.class 파일 불러오기
Class.forName("com.mysql.cj.jdbc.Driver");
// 2단계 : DB연결정보 저장
String dbUrl = "jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);
// 3단계 : 연결정보를 이용해서 sql구문 update 테이블 set 수정할열이름 = 수정값 where 조건열이름=값;
// 값자리에는 ?표로 하기
String sql = "update student set name=? where num=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setInt(2, num);
pstmt.setString(1, name);

// 4단계 SQL 구문 실행
pstmt.executeUpdate();

// 5단계 : 결과를 이용하여 출력
%>
학생정보수정성공 <%=pstmt %>
</body>
</html>

 

그림 1. 데이터베이스 연결 update

 

delete

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp3/delete.jsp</title>
</head>
<body>
<h1>학생정보삭제화면</h1>
<form action="deletePro.jsp" method="get">
학생번호 : <input type="text" name="num"><br>
학생이름: <input type="text" name="name"><br>
<input type="submit" value="학생정보삭제"><br>
</body>
</html>

 

<%@page import="java.sql.PreparedStatement"%>
<%@page import="com.mysql.cj.xdevapi.PreparableStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp3/deletePro.jsp</title>
</head>
<body>
<!-- 번호와 이름이 같을 때 삭제 -->
<%
request.setCharacterEncoding("utf-8");

int num = Integer.parseInt(request.getParameter("num"));
String name = request.getParameter("name");

//1단계 Driver.class 파일 불러오기
Class.forName("com.mysql.cj.jdbc.Driver");

//2단계 불러온 파일을 이용해서 DB연결
String dbUrl="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);

//3단계 연결 정보를 이용해 SQL 구문을 만들고 실행할 수 있는 객체 생성
String sql = "delete from student where num=? and name=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setInt(1, num);
pstmt.setString(2, name);

//4단계 SQL문 실행
pstmt.executeUpdate();
%>
학생정보삭제성공 <%=pstmt %>
</body>
</html>
 

 

그림 2. 데이터베이스 연결 delete

 

select 결과값이 있음.

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp3/select.jsp</title>
</head>
<body>
<h1>jsp3/select.jsp</h1>
<%
//1단계 Driver.class 파일 불러오기
Class.forName("com.mysql.cj.jdbc.Driver");

//2단계 불러온 파일을 이용해서 DB연결
String dbUrl ="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);

//3단계 연결 정보를 이용해 SQL 구문을 만들고 실행할 수 있는 객체 생성
String sql = "select * from student";
PreparedStatement pstmt = con.prepareStatement(sql);

//4단계 sql구문 실행 → 실행 후 결과 저장(select) → ResultSet 내장객체 저장
ResultSet rs = pstmt.executeQuery();
//import="java.sql.ResultSet"
//ResultSet : SQL구문 실행한 결과를 저장하는 내장객체

//5단계 결과를 이용해서 출력, 다른 곳에 저장(select)
// out.println(rs.next()+"<br>");
// out.println(rs.next()+"<br>");
// out.println(rs.next()+"<br>");
// out.println(rs.next()+"<br>");
// out.println(rs.next()+"<br>");
// while 처음과 끝을 모를때 사용, for 처음과 끝을 알 때 사용
// while(rs.next()==true){
// //다음 행 rs.next() true이면 데이터 있음 → 열을 정급
// out.println("다음행에 데이터가 있음 → 열 접근 = ");
// out.println("num : " + rs.getInt("num")+ " / ");
// out.println("name : " + rs.getString("name"));
// out.print("<br>");
// }
// out.println("다음행에 데이터가 없음 → 반복문 종료");

// while(rs.next()){
// out.println(rs.getInt("num"));
// out.println(" , ");
// out.println(rs.getString("name"));
// out.println("<br>");
// }

// 커서를 다음행으로 이동 next, 처음행으로 이동 fist, 마지막행으로 이동 last, 이전 행으로 이동 previous
// → return 값 데이터가 있으면 true, 없으면 false

%>
<table border="1">
<tr><td>num</td><td>name</td></tr>
<%
while(rs.next()){
%><tr><td><%=rs.getInt("num") %></td><td><%=rs.getString("name") %></td></tr><%
}

%>
</table>

</body>
</html>

 

 

 

그림 3. select 1

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp3/selectForm.jsp</title>
</head>
<body>
<h1>학생 정보 조회</h1>
<form action="selectPro.jsp" method="get">
학생번호 : <input type="text" name="num"><br>
<input type="submit" value="학생정보조회"><br>
</form>
</body>
</html>

 

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp3/selectPro.jsp</title>
</head>
<body>
<h1>학생 정보 조회</h1>
<%
int num = Integer.parseInt(request.getParameter("num"));

//1단계 Driver.class 파일 불러오기
Class.forName("com.mysql.cj.jdbc.Driver");

//2단계 불러온 파일을 이용해서 DB연결
String dbUrl ="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);

// 3단계 연결정보를 이용해서 SQL구문을 만들고 실행할 수 있는 객체생성
// select * from 테이블이름 where 조건열=값;
PreparedStatement pstmt = con.prepareStatement("select * from student where num=?");
pstmt.setInt(1, num);

// 4단계 SQL 구문 실행 → 실행 후 결과 저장(select) → ResultSet 내장객체 저장
ResultSet rs = pstmt.executeQuery();

// 5단계 결과를 이용해서 출력, 다른 곳에 저장(select)
// if, while 커서를 다음행 이동 → 리턴값 데이터가 있으면 true → 열 접근 출력
// 없으면 false → 조건문을 빠져나옴
//num값을 받고, 조건=num값

%>

<table border="1">
<tr><td>num</td><td>name</td></tr>
<%
if(rs.next()){%>
<tr><td><%=rs.getInt("num") %></td><td><%=rs.getString("name") %></td></tr><%
}%>
</table>
</body>
</html>

 

그림 4. select 2

728x90