티스토리 뷰

카테고리 없음

DB-연결 WebApp07

Xion 2019. 10. 28. 15:45
SELECT USER
FROM DUAL;
--==>> SCOTT

SELECT *
FROM TAB;

SELECT *
FROM TBL_MEMBER;

--기존 테이블 제거
DROP TABLE TBL_MEMBER PURGE;
--==>> Table TBL_MEMBER이(가) 삭제되었습니다.

-- 휴지통 비우기
PURGE RECYCLEBIN;
--==>> RECYCLEBIN이(가) 비워졌습니다.

-- 기존 스퀀스 제거
DROP SEQUENCE MEMBERSEQ;
--==>> Sequence MEMBERSEQ이(가) 삭제되었습니다.

--------------------------------------------

CREATE TABLE TBL_MEMBER
( SID   NUMBER
, NAME  VARCHAR2(30)
, TEL   VARCHAR2(40)
, CONSTRAINT MEMBER_SID_PK PRIMARY KEY(SID)

);
--==>> Table TBL_MEMBER이(가) 생성되었습니다.

--○ 시퀀스 생성
CREATE SEQUENCE MEMBERSEQ
NOCACHE;
--==>> Sequence MEMBERSEQ이(가) 생성되었습니다.

--○ 데이터 입력 쿼리문 구성
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-1111-1111')
;
--○ 테이블 전체 조회 쿼리문 구성
SELECT SID,NAME,TEL
FROM TBL_MEMBER;
--==>> 1   강초롱   010-1111-1111

-->한줄구성
SELECT SID,NAME,TEL FROM TBL_MEMBER ORDER BY SID
;
-->1   강초롱   010-1111-1111

--○인원 수 확인 쿼리문 구성
SELECT COUNT(*) AS COUNT
FROM TBL_MEMBER;
-->한줄구성
SELECT COUNT(*) AS COUNT FROM TBL_MEMBER
;
-->1

--커밋
COMMIT;
















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");

%>

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>

DBConn.java

package com.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConn
{
   private static Connection dbConn;
   
   public static Connection getConnection() throws ClassNotFoundException, SQLException
   {
      if (dbConn == null)
      {
         String url = "jdbc:oracle:thin:@localhost:1521:xe";
         String user = "scott";
         String pwd = "tiger";
         Class.forName("oracle.jdbc.driver.OracleDriver");
         dbConn = DriverManager.getConnection(url, user, pwd);
      }
      return dbConn;
   }
   
   public static Connection getConnection(String url, String user, String pwd) throws ClassNotFoundException, SQLException
   {
      if (dbConn == null)
      {
         Class.forName("oracle.jdbc.driver.OracleDriver");
         dbConn = DriverManager.getConnection(url, user, pwd);
      }
      return dbConn;
   }
   
   public static void close() throws SQLException
   {
      if (dbConn != null)
      {
         if(!dbConn.isClosed())
            dbConn.close();
      }
      dbConn = null;
   }
}