Everything has an expiration date
★★★ [JSP & JDBC & Oracle] 20231212 [프로그램소스] - Test002, WebApp08_scott, MemberInsert 본문
[JSP & JDBC & Oracle]/Program source (JSP & JDBC & Oracle)
★★★ [JSP & JDBC & Oracle] 20231212 [프로그램소스] - Test002, WebApp08_scott, MemberInsert
Jelly-fish 2023. 12. 13. 01:25
WebApp08
01
Test002.jsp
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="com.util.DBConn"%>
<%@page import="java.sql.Connection"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%
// 결과값 변수
String str = "";
// 데이터베이스 연결
Connection conn = DBConn.getConnection();
// 쿼리문 준비(select)
String sql = "SELECT SID, NAME, TEL FROM TBL_MEMBER ORDER BY SID";
// 작업 객체 생성 및 쿼리문 실행
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
// 결과 ResultSet 에 대한 처리 → 반복문
str += "<table class='table'>";
str += "<tr>";
str += "<th id='numTitle'>번호</th>";
str += "<th id='nameTitle'>이름</th>";
str += "<th id='telTitle'>전화번호</th>";
str += "</tr>";
while(rs.next())
{
str += "<tr>";
str += "<td class='contentTd'>" + rs.getString("SID") + "</td>";
str += "<td class='contentTd'>" + rs.getString("NAME") + "</td>";
str += "<td class='contentTd'>" + rs.getString("TEL") + "</td>";
str += "</tr>";
}
str += "</table>";
rs.close();
stmt.close();
DBConn.close();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test002.jsp</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
<style type="text/css">
input {width: 200px;}
button {width: 208px; height: 50px; font-weight: bold;}
#numTitle {width: 50px;}
#nameTitle {width: 100px;}
#telTitle {width: 160px;}
.errMsg {font-size: small; color: red; display: none;}
/* td {text-align: center;} */
.contentTd {text-align: center;}
</style>
<script type="text/javascript">
// 필수 입력 항목 (→ 이름)에 대한 기본적인 입력 확인
function formCheck()
{
// 확인
//alert("함수 호출~!!!");
var uName = document.getElementById("userName");
var nameErr = document.getElementById("nameErr");
// 데이터 추가 버튼 클릭했을 때 이름이 입력되어 있다면
// 에러메시지를 노출하지 않도록 설정.
nameErr.style.display = "none";
// 필수 입력 항목이 입력 되지 않았다면
// 에러메시지 보이도록.
if (uName.value == "")
{
nameErr.style.display = "inline";
return false;
}
//return false;
return true;
}
</script>
</head>
<body>
<div>
<h1>데이터베이스 연결 및 데이터 처리</h1>
<hr>
</div>
<div>
<!-- 데이터 입력 -->
<form action="MemberInsert.jsp" method="post" onsubmit="return formCheck()">
<table>
<tr>
<th>이름(*)</th>
<td>
<input type="text" id="userName" name="userName" class="txt">
<span class="errMsg" id="nameErr">이름을 입력해야 합니다.</span>
</td>
</tr>
<tr>
<th>전화번호</th>
<td>
<input type="text" id="userTel" name="userTel" class="txt">
</td>
</tr>
<tr>
<th></th>
<td>
<button type="submit" id="btnAdd" class="btncontrol">데이터 추가</button>
</td>
</tr>
</table>
</form>
</div>
<br><br>
<div>
<!-- [정적인 처리 결과 출력물 예시]
처리 결과
<table class="table">
<tr>
<th id="numTitle">번호</th>
<th id="nameTitle">이름</th>
<th id="telTitle">전화번호</th>
</tr>
<tr>
<td class="contentTd">5</td>
<td class="contentTd">박나영</td>
<td class="contentTd">010-5555-5555</td>
</tr>
<tr>
<td class="contentTd">6</td>
<td class="contentTd">정현욱</td>
<td class="contentTd">010-6666-6666</td>
</tr>
</table>
-->
<%=str %>
</div>
</body>
</html>
WebApp08_scott.sql
[Data Base - Oracle : TBL_Member]
SELECT USER
FROM DUAL;
--==>> SCOTT
SELECT *
FROM TAB;
-- 휴지통 비우기
PURGE RECYCLEBIN;
--==>> RECYCLEBIN이(가) 비워졌습니다.
SELECT *
FROM TAB;
-- 기존 테이블 제거
DROP TABLE TBL_MEMBER;
--==>> Table TBL_MEMBER이(가) 삭제되었습니다.
--------------------------------------------------------------------------------
--○ 실습 테이블 생성 (TBL_MEMBER)
CREATE TABLE TBL_MEMBER
( SID NUMBER
, NAME VARCHAR2(30)
, TEL VARCHAR2(40)
, CONSTRAINT MEMBER_SID_PK PRIMARY KEY(SID)
);
--==>> Table TBL_MEMBER이(가) 생성되었습니다.
--○ 시퀀스 생성 (MEMBERSEQ)
CREATE SEQUENCE MEMBERSEQ
NOCACHE;
--==>> Sequence MEMBERSEQ이(가) 생성되었습니다.
--○ 데이터 입력 쿼리문 구성
INSERT INTO TBL_MEMBER(SID, NAME, TEL)
VALUES (MEMBERSEQ.NEXTVAL, '문정환', '010-1111-1111');
--> 한 줄 구성
INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES (MEMBERSEQ.NEXTVAL, '문정환', '010-1111-1111')
;
--==>> 1 행 이(가) 삽입되었습니다.
--○ 샘플 데이터 추가 입력
INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES (MEMBERSEQ.NEXTVAL, '정한울', '010-2222-2222')
;
INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES (MEMBERSEQ.NEXTVAL, '최혜인', '010-3333-3333')
;
INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES (MEMBERSEQ.NEXTVAL, '길현욱', '010-4444-4444')
;
--==>> 1 행 이(가) 삽입되었습니다. * 3
--○ 테이블 전체 조회 쿼리문 구성(리스트 확인)
SELECT SID, NAME, TEL
FROM TBL_MEMBER
ORDER BY SID;
--> 한 줄 구성
SELECT SID, NAME, TEL FROM TBL_MEMBER ORDER BY SID
;
--==>>
/*
==========================
SID NAME TEL
==========================
1 문정환 010-1111-1111
2 정한울 010-2222-2222
3 최혜인 010-3333-3333
4 길현욱 010-4444-4444
==========================
*/
--○ 인원 수 확인 쿼리문 구성
SELECT COUNT(*) AS COUNT
FROM TBL_MEMBER;
--> 한 줄 구성
SELECT COUNT(*) AS COUNT FROM TBL_MEMBER
;
--==>> 4
--○ 커밋
COMMIT;
--==>> 커밋 완료.
MemberInsert.jsp (Logic)
<%@page import="java.sql.Statement"%>
<%@page import="com.util.DBConn"%>
<%@page import="java.sql.Connection"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%
// MemberInsert.jsp
// 이전 페이지(Test002.jsp)로부터 넘어온 데이터 수신
// → userName, userTel
// 한글 데이터 깨짐 방지
request.setCharacterEncoding("UTF-8");
String uName = request.getParameter("userName");
String uTel = request.getParameter("userTel");
// 데이터베이스 연결
Connection conn = DBConn.getConnection();
// 쿼리문 준비(insert)
String sql = String.format("INSERT INTO TBL_MEMBER(SID, NAME, TEL)"
+ "VALUES (MEMBERSEQ.NEXTVAL, '%s', '%s')", uName, uTel);
// DB 액션 처리 → 작업 객체 생성 및 쿼리문 수행
Statement stmt = conn.createStatement();
int result = 0;
result = stmt.executeUpdate(sql);
stmt.close();
DBConn.close();
if (result < 1)
{
// 입력 액션 처리가 정상적으로 이루어지지 않은 경우
response.sendRedirect("Error.jsp");
//-- 내가 잘 아는 에러 페이지를 소개시켜줄게...
}
else
{
// 입력 액션 처리가 정상적으로 이루어진 경우
response.sendRedirect("Test002.jsp");
//-- 이 페이지로 오기 전에 네가 머물던 리스트 페이지 주소를
// 새롭게 다시 요청해서 찾아가봐~!!!
// 네가 입력하려는 내용이 추가된 상태로 리스트의 내용이 바뀌어 있을거야...
}
%>