티스토리 뷰

Web(국비)/DB연결

DB연결-WebApp09

Xion 2019. 10. 28. 15:46

WebApp09_scott.sql

SELECT USER
FROM DUAL;
--==>> SCOTT

--○ 여러 명의 이름, 국어, 영어, 수학 점수를 입력받아
--   총점과 평균을 계산하여 출력해줄 수 있는 프로그램을 구현한다.
--   데이터페비으를 연동하여 처리한다.
--   즉, 성적 처리 프로그램을 데이터베이스 연동하여 jsp 로 구성할 수 있도록 한다.

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

--○ 실습 테이블 생성
CREATE TABLE TBL_SCORE
( SID   NUMBER
, NAME  VARCHAR2(30)
, KOR   NUMBER(3)
, ENG   NUMBER(3)
,MAT    NUMBER(3)
);
--==>> Table TBL_SCORE이(가) 생성되었습니다.


--○ 제약조건 추가
ALTER TABLE TBL_SCORE
ADD (CONSTRAINT SCORE_SID_PK PRIMARY KEY(SID)
    ,CONSTRAINT SCORE_KOR_CK CHECK(KOR BETWEEN 0 AND 100)
    ,CONSTRAINT SOCRE_ENG_CK CHECK(ENG BETWEEN 0 AND 100)
    ,CONSTRAINT SCORE_MAT_CK CHECK(MAT BETWEEN 0 AND 100) );
--==>> Table TBL_SCORE이(가) 변경되었습니다.

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

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


-- ○ 리스트 조회 쿼리문 작성
SELECT SID, NAME, KOR, ENG, MAT
    , (KOR+ENG+MAT) AS TOT
    , ((KOR+ENG+MAT)/3) AS AVG
FROM TBL_SCORE
ORDER BY SID ASC;
--==>> ○ 한 줄 구성
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;
--==>> 커밋 완료.
    
    
    

ScoreDAO.java

/*
 	데이터베이스 액션 처리 전용 객체 활용

 */

package com.test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.util.DBConn;

public class ScoreDAO
{
	private Connection conn;
	
	public ScoreDAO()throws SQLException, ClassNotFoundException
	{
		conn=DBConn.getConnection();
		
	}
	
	//데이터 입력 메소드 정의
	public int add(ScoreDTO score)throws SQLException
	{
		int result=0;
		
		//DB는 연결됐으니 sql문하고
		String sql="INSERT INTO TBL_SCORE(SID, NAME,KOR,ENG,MAT) VALUES(SCORESEQ.NEXTVAL,?,?,?,?)";
		//작업객체 생성
		PreparedStatement pstmt=conn.prepareStatement(sql);
		
		pstmt.setString(1, score.getName());
		pstmt.setString(2, score.getKor());
		pstmt.setString(3, score.getEng());
		pstmt.setString(4, score.getMat());
		
		result=pstmt.executeUpdate();
		pstmt.close();
		
		return result;
	}
	
	//리스트 전체 출력 메소드 정의
	public ArrayList<ScoreDTO> lists() throws SQLException
	{
		ArrayList<ScoreDTO> result=new ArrayList<ScoreDTO>();
		
		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";
		
		PreparedStatement pstmt=conn.prepareStatement(sql);

		ResultSet rs = pstmt.executeQuery();
				
		while(rs.next())
		{
			ScoreDTO score = new ScoreDTO();
			
			score.setSid(rs.getString("SID"));
			score.setName(rs.getString("NAME"));
			score.setKor(rs.getString("KOR"));
			score.setEng(rs.getString("ENG"));
			score.setMat(rs.getString("MAT"));
			
			result.add(score);
		}
		rs.close();
		pstmt.close();
		
		return result;
	}
	/*
	 * //인원 수 확인 메소드 public int count()throws SQLException {
	 * 
	 * int count=0;
	 * 
	 * String sql=""
	 * 
	 * return count; }
	 * 
	 */
}

ScoreDTO.java

package com.test;

public class ScoreDTO
{

	private String sid,name,kor,eng,mat,tot,avg;

	public String getSid()
	{
		return sid;
	}

	public void setSid(String sid)
	{
		this.sid = sid;
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public String getKor()
	{
		return kor;
	}

	public void setKor(String kor)
	{
		this.kor = kor;
	}

	public String getEng()
	{
		return eng;
	}

	public void setEng(String eng)
	{
		this.eng = eng;
	}

	public String getMat()
	{
		return mat;
	}

	public void setMat(String mat)
	{
		this.mat = mat;
	}

	public String getTot()
	{
		return tot;
	}

	public void setTot(String tot)
	{
		this.tot = tot;
	}

	public String getAvg()
	{
		return avg;
	}

	public void setAvg(String avg)
	{
		this.avg = avg;
	}
	
}

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;
   }
}

ScoreInsert.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%
		//ScoreInsert.jsp
		//데이터 입력 처리 페이지
		
		request.setCharacterEncoding("UTF-8");

		String userName=request.getParameter(")

%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

ScoreList.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
	function formCheck()
	{
		var userName=document.getElementById("userName");
		var nameMsg=document.getElementById("nameMsg");
		
		var userKor=document.getElementById("userKor");
		var kormsg =document.getElementById("kormsg");
		
		var userEng = document.getElementById("userEng");
		var engmsg  = document.getElementById("engmsg");
		
		var userMat = document.getElementById("userMat");
		var matmsg  = document.getElementById("matmsg");
		
		nameMsg.style.display="none";
		kormsg.style.display="none";
		engmsg.style.display="none";
		matmsg.style.display="none";
		
		if(userName=="")
		{
			nameMsg.style.display="inline";
			nameMsg.focus();
			return false;
		}
		if(userKor.value =="" || isNaN(userKor.value) || Number(userKor.value) <0 || Number(userKor)>100 )
	}

</script>
</head>
<body>
	<div>
		<h1>데이터베이스 연동 점수관리 실습</h1>
	</div>
	
	
		<form action="SCoreInsert.jsp" method="post" onsubmit="return formCheck()">
			<table class="tbl">
				<tr>
					<th>이름(*)</th>
						<td>
							<input type="text" id="userName" name="userName">
							<span class="errMsg" id="nameMsg">이름을 입력해야 합니다</span>
							</td>
						</tr>
						<tr>
							<th>국어점수입력</th>
							<td>
								<input type="text" id="userKor" name="userKor">
								<span class="errMsg" id="kormsg">0부터100점</span>
							</td>
						</tr>
						<tr>
							<th>영어점수입력</th>
							<td>
								<input type="text" id="userEng" name="userEng">
								<span class="errMsg" id="engmsg">0~100사이
								</span>
							</td>
						</tr>
						<tr>
							<th>수학점수 입력</th>
							<td>
								<input type="text" id="userMat" name="userMat">
								<span clas="errMsg" id="kormsg">0~100사이</span>
							</td>
							</tr>
						<tr>
							<td colspan="2">
								<button type="submit" class="btn">회원 추가</button>
							</td>
						</tr>
			</table>
</body>
</html>

'Web(국비) > DB연결' 카테고리의 다른 글

[Java]Cookie란?  (0) 2019.10.30
[JAVA]-BEAN  (0) 2019.10.29
DB-연결 WebApp08  (0) 2019.10.28
[Java] score DB연결  (0) 2019.10.28
DB연결1  (0) 2019.10.27