ScoreList.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@page import="com.util.DBConn"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.Statement"%>
<%
request.setCharacterEncoding("UTF-8");
//TBL_MEMBER테이블에 저장된값을 주세요
//결과값 변수 구성
String str = "";
//데이터베이스 연결
Connection conn = DBConn.getConnection();
// 쿼리문 준비
String sql = "SELECT SID,NAME,KOR,ENG,MAT,(KOR+ENG+MAT) AS TOT , ((KOR+ENG+MAT)/3) AS AVG FROM TBL_SCORE ORDER BY SID ASC";
//작업 객체 생성 및 준비된 쿼리문 수행
//처음 생성한거니 statement작업객체
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
//결과 ResultSet에 대한 처리 ->반복문 구성
str += "<table class='tb'>";
str += "<tr>";
str += "<th>번호</th>";
str += "<th>이름</th>";
str += "<th>국어점수</th>";
str += "<th>영어점수</th>";
str += "<th>수학점수</th>";
str += "<th>총점</th>";
str += "<th>평균</th>";
str += "</tr>";
while (rs.next()) {
str += "<tr>";
str += "<td>" + rs.getString("SID") + "</td>";
str += "<td>" + rs.getString("NAME") + "</td>";
str += "<td>" + rs.getInt("KOR") + "</td>";
str += "<td>" + rs.getInt("ENG") + "</td>";
str += "<td>" + rs.getInt("MAT") + "</td>";
str += "<td>" + rs.getInt("TOT") + "</td>";
str += "<td>" + String.format("%.1f", rs.getDouble("AVG")) + "</td>";
str += "</tr>";
}
str += "</table>";
rs.close();
stmt.close();
DBConn.close();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ScoreList.jsp</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
<style type="text/css">
.listTd {
text-align: center;
}
.errMsg {
font-size: small;
color: red;
display: none;
}
</style>
<script type="text/javascript">
function formCheck()
{
var uName = document.getElementById("userName");
var nErr = document.getElementById("userMsg");
var sKor = document.getElementById("scoreKor");
var kErr = document.getElementById("korMsg");
var sEng = document.getElementById("scoreEng");
var eErr = document.getElementById("engMsg");
var sMat = document.getElementById("scoreMat");
var mErr = document.getElementById("matMsg");
nErr.style.display = "none";
kErr.style.display = "none";
eErr.style.display = "none";
mErr.style.display = "none";
if (uName.value == "")
{
nErr.style.display = "inline";
uName.focus();
return false;
}
if (sKor.value == "" || isNaN(sKor.value) || Number(sKor.value) < 0 || Number(sKor.value) > 100)
{
kErr.style.display = "inline";
sKor.focus();
return false;
}
if (sEng.value == "" || isNaN(sEng.value) || Number(sEng.value) < 0 || Number(sEng.value) > 100)
{
eErr.style.display = "inline";
sEng.focus();
return false;
}
if (sMat.value == "" || isNaN(sMat.value) || Number(sMat.value) < 0 || Number(sMat.value) > 100)
{
mErr.style.display = "inline";
sMat.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<div>
<h1>성적 정보 리스트</h1>
<hr>
</div>
<div>
<form action="Scoreinsert.jsp" method="post" onsubmit="return formCheck()">
<table class="tbl">
<tr>
<th style="width: 80px;">이름(*)</th>
<td><input type="text" id="userName" name="userName">
<span class="errMsg" id="userMsg">이름을 입력해야 합니다.</span></td>
</tr>
<tr>
<th>국어점수</th>
<td><input type="text" id="scoreKor" name="scoreKor" class="txtNumber">
<span class="errMsg" id="korMsg">0에서 100 사이의 점수 입력</span></td>
</tr>
<tr>
<th>영어점수</th>
<td><input type="text" id="scoreEng" name="scoreEng"
class="txtNumber"> <span class="errMsg" id="engMsg">0에서
100 사이의 점수 입력</span></td>
</tr>
<tr>
<th>수학점수</th>
<td><input type="text" id="scoreMat" name="scoreMat"
class="txtNumber"> <span class="errMsg" id="matMsg">0에서
100 사이의 점수 입력</span></td>
</tr>
<tr>
<td colspan="2" style="text =align: left;"><input
type="submit" value="등록" class="btn"
style="width: 280px; height: 50px font-weight: bold;"></td>
</tr>
</table>
</form>
<div class="div01"></div>
<!--
<table>
<tr>
<th>번호</th><td>이름</td><th>국어점수</th><th>영어점수</th><th>수학점수</th>
<th>총점</th><th>평균</th>
</tr>
<tr>
<td class="listTd">1</td><td class="listTd">이성조</td>
<td class="listTd">90</td><td class="listTd">80</td><td class="listTd">70</td>
<td class="listTd">240</td><td class="listTd">80.0</td>
</table>
-->
</div>
<div class="div01">
<%=str%>
</div>
</body>
</html>
Scoreinsert.jsp
<%@page import="java.sql.Statement"%>
<%@page import="com.util.DBConn"%>
<%@page import="java.sql.Connection"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("userName");
int kor = Integer.parseInt(request.getParameter("scoreKor"));
int eng = Integer.parseInt(request.getParameter("scoreEng"));
int mat = Integer.parseInt(request.getParameter("scoreMat"));
// ○ 데이터베이스 연결
try
{
Connection conn = DBConn.getConnection();
// ○ 데이터베이스의 전송할 쿼리문 준비 → insert
String sql = String.format("INSERT INTO TBL_SCORE(SID,NAME,KOR,ENG,MAT) VALUES(SCORESEQ.NEXTVAL,'%s',%d,%d,%d)",name,kor,eng,mat);
// ○ DB 액션 처리 → insert
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
}
catch(Exception e)
{
// 서버측 콘솔에서 확인
System.out.println(e.toString());
}
finally
{
//데이터베이스 연결 종료
DBConn.close();
}
// 클라이언트가 다시 요청해야 할 URL 건네주기( sendRedirect())메소드 활용
response.sendRedirect("ScoreList.jsp");
%>
SQL문 코드
--○ 여러 명의 이름, 국어 , 영어 , 수학 점수를 입력받아
-- 총점과 평균을 계싼하여 출력해줄 수 있는 프로그램을 구현한다.
-- 데이터베이스를 연동하여 처리한다.
-- 즉, 성적 처리 프로그램을 데이터베이스 연동하여 JSP 로 구성할 수 있도록 한다.
--○기존 테이블 제거
DROP TABlE TBL_SCORE PURGE;
--실습 테이블 생성
CREATE TABLE TBL_SCORE
(SID NUMBER
,NAME VARCHAR2(30)
,KOR NUMBER(3)
,ENG NUMBER (3)
,MAT NUMBER (3)
);
--제약조건 추가
ALTER TABLE TBL_SCORE
ADD(CONSTRAINT SCORE_SID_PK PRIMARY KEY(SID)
,CONSTRAINT SCORE_KOR_CK CHECK(KOR BETWEEN 0 AND 100)
,CONSTRAINT SCORE_ENG_CK CHECK(ENG BETWEEN 0 AND 100)
,CONSTRAINT SCORE_MAT_CK CHECK(MAT BETWEEN 0 AND 100)
);
--기존 시퀀스 제거
DROP SEQUENCE SCORESEQ;
--시퀀스 생성
CREATE SEQUENCE SCORESEQ
NOCACHE;
--리스트 조회 쿼리문 구성
SELECT SID,NAME,KOR,ENG,MAT,(KOR+ENG+MAT) AS TOT , ((KOR+ENG+MAT)/3) AS AVG FROM TBL_SCORE ORDER BY SID ASC;
--데이터 입력 쿼리문 구성
INSERT INTO TBL_SCORE(SID,NAME,KOR,ENG,MAT)
VALUES(SCORESEQ.NEXTVAL,'이성조',90,80,70);
--한줄구성
INSERT INTO TBL_SCORE(SID,NAME,KOR,ENG,MAT) VALUES(SCORESEQ.NEXTVAL,'이성조',90,80,70)
;
-->1행이 삽입
COMMIT;
'Web(국비) > DB연결' 카테고리의 다른 글
DB연결-WebApp09 (0) | 2019.10.28 |
---|---|
DB-연결 WebApp08 (0) | 2019.10.28 |
DB연결1 (0) | 2019.10.27 |
DB연결2 (0) | 2019.10.25 |
DB연결 (0) | 2019.10.25 |