1. 게시판 삭제와 업데이트(수정)를 구현하시오.
1-1-1. Controller 객체 (매핑 구현부만 표시)
...
if (com.equals("/delete.do")) {
command = new BListCommand();
command.execute(request, response);
viewPage = "list.do"; // 삭제가 완료되면 list페이지로 이동한다.
} else if(com.equals("/modify.do")) {
command = new BModifyCommand();
command.execute(request, response);
viewPage = "list.do"; // 수정이 완료되면 list페이지로 이동한다.
}
...
1-1-2. 삭제 Command 객체
package edu.bit.ex.command;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import edu.bit.ex.dao.BDao;
public class BDeleteCommand implements BCommand {
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
String bId = request.getParameter("bId");
BDao dao = new BDao();
dao.delete(bId);
}
}
1-1-3. 수정 Command 객체
package edu.bit.ex.command;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import edu.bit.ex.dao.BDao;
public class BModifyCommand implements BCommand {
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
String bId = request.getParameter("bId");
String bName = request.getParameter("bName");
String bTitle = request.getParameter("bTitle");
String bContent = request.getParameter("bContent");
BDao dao = new BDao();
dao.modify(bId, bName, bTitle, bContent);
}
}
1-1-4. DAO 객체 (삭제랑 업데이트 구현부만 표시)
...
// 게시글을 삭제하여 DELETE하기
public void delete(String bId) {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = dataSource.getConnection();
String query = "DELETE FROM mvc_board "
+ "WHERE bId = ?"; // 해당 게시글 정보를 DELETE하기
preparedStatement = connection.prepareStatement(query);
preparedStatement.setInt(1, Integer.parseInt(bId));
int rn = preparedStatement.executeUpdate();
System.out.println("DELETE 결과: " + rn);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(preparedStatement != null) preparedStatement.close();
if(connection != null) connection.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
// 게시글을 수정하여 UPDATE하기
public void modify(String bId, String bName, String bTitle, String bContent) {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = dataSource.getConnection();
String query = "UPDATE mvc_board "
+ "SET bName = ?, bTitle = ?, bContent = ? "
+ "WHERE bId = ?"; // 해당 게시글 정보를 UPDATE하기
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, bName);
preparedStatement.setString(2, bTitle);
preparedStatement.setString(3, bContent);
preparedStatement.setInt(4, Integer.parseInt(bId));
int rn = preparedStatement.executeUpdate();
System.out.println("UPDATE 결과: " + rn);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(preparedStatement != null) preparedStatement.close();
if(connection != null) connection.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
...
1-1-5. content_view 페이지
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<table width="500" cellpadding="0" cellspacing="0" border="1">
<form action="modify.do" method="post">
<input type="hidden" name="bId" value="${content_view.bId}">
<tr>
<td> 번호 </td>
<td> ${content_view.bId} </td>
</tr>
<tr>
<td> 히트 </td>
<td> ${content_view.bHit} </td>
</tr>
<tr>
<td> 이름 </td>
<td> <input type="text" name="bName" value="${content_view.bName}"></td>
</tr>
<tr>
<td> 제목 </td>
<td> <input type="text" name="bTitle" value="${content_view.bTitle}"></td>
</tr>
<tr>
<td> 내용 </td>
<td> <textarea rows="10" name="bContent" >${content_view.bContent}</textarea></td>
</tr>
<tr >
<td colspan="2">
<input type="submit" value="수정">
<a href="list.do">목록보기</a>
<a href="delete.do?bId=${content_view.bId}">삭제</a>
<a href="reply_view.do?bId=${content_view.bId}">답변</a>
</td>
</tr>
</form>
</table>
</body>
</html>
1-2-1. 삭제 구현결과
1-2-2. 수정 구현결과
2. 아래를 sql 문으로 나타 내시오.
2-1. 부서테이블의 모든 데이터를 출력하라.
DESC dept;
2-2. EMP테이블에서 각 사원의 직업, 사원번호, 이름, 입사일을 출력하라.
SELECT job, empno, ename, hiredate
FROM emp;
2-3. EMP테이블에서 직업을 출력하되, 각 항목(ROW)가 중복되지 않게 출력하라.
SELECT DISTINCT job
FROM emp;
2-4. 급여가 2850 이상인 사원의 이름 및 급여를 표시하는 출력하라.
SELECT ename, sal
FROM emp
WHERE sal >= 2850;
2-5. 사원번호가 7566인 사원의 이름 및 부서번호를 표시하는 출력하라.
SELECT ename, empno
FROM emp
WHERE empno = 7566;
2-6. 급여가 1500이상 ~ 2850이하의 범위에 속하지 않는 모든 사원의 이름 및 급여를 출력하라.
SELECT ename, sal
FROM emp
WHERE sal NOT BETWEEN 1500 AND 2850;
2-7. 1981년 2월 20일 ~ 1981년 5월 1일에 입사한 사원의 이름,직업 및 입사일을 출력하라. 또한 입사일을 기준으로 해서 오름차순으로 정렬하라.
SELECT ename, job, hiredate
FROM emp
WHERE hiredate BETWEEN '1981-02-20' AND '1981-05-01'
ORDER BY hiredate ASC;
2-8. 10번 및 30번 부서에 속하는 모든 사원의 이름과 부서 번호를 출력하되, 이름을 알파벳순으로 정렬하여 출력하라.
SELECT ename, deptno
FROM emp
WHERE deptno IN (10, 30)
ORDER BY ename ASC;
2-9. 10번 및 30번 부서에 속하는 모든 사원 중 급여가 1500을 넘는 사원의 이름 및 급여를 출력하라. (단 컬럼명을 각각 employee 및 Monthly Salary로 지정하시오)
SELECT ename as 'employee', sal as 'Monthly_Salary'
FROM emp
WHERE sal > 1500 AND
deptno IN (10, 30);
2-10. 관리자가 없는 모든 사원의 이름 및 직위를 출력하라.
SELECT ename, job
FROM emp
WHERE mgr IS null;
2-11. 커미션을 받는 모든 사원의 이름, 급여 및 커미션을 출력하되, 급여를 기준으로 내림차순으로 정렬하여 출력하라.
SELECT ename, sal, comm
FROM emp
WHERE comm IS NOT null
ORDER BY sal DESC;
2-12. 이름의 세 번째 문자가 A인 모든 사원의 이름을 출력하라.
SELECT ename
FROM emp
WHERE ename = '__A';
2-13. 이름에 L이 두 번 들어가며 부서 30에 속해있는 사원의 이름을 출력하라.
SELECT ename
FROM emp
WHERE ename = '%L%L%' AND
deptno = 30;
2-14. 직업이 Clerk 또는 Analyst 이면서 급여가 1000,3000,5000 이 아닌 모든 사원의 이름, 직업 및 급여를 출력하라.
SELECT ename, job, sal
FROM emp
WHERE job IN ('CLERK', 'ANALYST') AND
sal NOT IN (1000, 3000, 5000);
2-15. 사원번호, 이름, 급여 그리고 15%인상된 급여를 정수로 표시하되 컬럼명을 New Salary로 지정하여 출력하라.
SELECT empno, ename, sal, TRUNC((sal*1.15)) AS New_Salary
FROM emp;
2-16. 15번 문제와 동일한 데이타에서 급여 인상분(새 급여에서 이전 급여를 뺀 값)을 추가해서 출력하라.(컬럼명은 Increase로 하라).
SELECT empno, ename, sal, TRUNC((sal*1.15)-sal) AS Increase
FROM emp;
2-17. 모든 사원의 이름(첫 글자는 대문자로, 나머지 글자는 소문자로 표시) 및 이름 길이를 표시하는 쿼리를 작성하고 컬럼 별칭은 적당히 넣어서 출력하라.
SELECT INITCAP(ename) AS Ename, LENGTH(ename) AS 'Lename'
FROM emp;
2-18. 사원의 이름과 커미션을 출력하되, 커미션이 책정되지 않은 사원의 커미션은 ‘no commission’으로 출력하라.
SELECT ename, NVL(comm, 'No_Commission') AS Commission
FROM emp;
2-19. 모든 사원의 이름,부서번호,부서이름을 표시하는 질의를 작성하라.(DECODE)
SELECT ename, deptno, DECODE(deptno, 10, 'ACCOUNTING',
20, 'RESEARCH',
30, 'SALES',
40, 'OPERATIONS') AS Dname
FROM emp;
'WebDev > 본과정' 카테고리의 다른 글
DB의 무결성 제약조건 및 외래키와 JDBC의 예외 처리 (0) | 2021.05.16 |
---|---|
MVC 패턴을 이용한 게시판 구현-2 (0) | 2021.05.16 |
[JSP] MVC 패턴을 이용한 DB 가져오기 (0) | 2021.05.15 |
SQL의 그룹 함수와 형 변환 및 조건문, JSP의 MVC 패턴 (0) | 2021.05.15 |
DB 기초 쿼리문과 JDBC 개요 (0) | 2021.05.15 |
최근댓글