JSP
JSP(Oracle_DB업로드)_2024
앵보몬
2024. 8. 28. 17:34
728x90
반응형
이 SQL 스크립트는 오라클 데이터베이스에서 새 사용자 계정을 생성하고, 해당 계정에 테이블과 시퀀스를 설정하는 과정을 포함하고 있습니다. 스크립트는 크게 두 부분으로 나누어져 있습니다. system 계정에서 실행할 부분과 musthave 계정에서 실행할 부분, 각 부분의 역할과 세부 사항은 다음과 같습니다.
system 계정에서 실행할 부분
① 사용자 계정 생성 및 권한 부여
-- 계정 생성에 필요한 설정
alter session set "_ORACLE_SCRIPT"=true;
-- 새 사용자 계정 생성
create user musthave identified by 1234;
-- 사용자에게 권한 부여
grant connect, resource to musthave;
② 테이블 스페이스 확인 및 권한 설정
-- 테이블 스페이스 조회
select tablespace_name, status, contents from dba_tablespaces;
-- 테이블 스페이스별 가용 공간 확인
select tablespace_name, sum(bytes), max(bytes) from dba_free_space
group by tablespace_name;
-- musthave 계정의 기본 테이블 스페이스 확인
select username, default_tablespace from dba_users
where username = upper('musthave');
-- 테이블 스페이스에 5MB 용량 할당
alter user musthave quota 5m on users;
musthave 계정에서 실행할 부분
① 기존 테이블 삭제 및 새 테이블 생성
-- 기존 테이블 및 시퀀스 삭제
drop table member;
drop table board;
drop sequence seq_board_num;
-- 회원 테이블 생성
create table member (
id varchar2(10) not null,
pass varchar2(10) not null,
name varchar2(30) not null,
regidate date default sysdate not null,
primary key (id)
);
-- 게시판 테이블 생성
create table board (
num number primary key,
title varchar2(200) not null,
content varchar2(2000) not null,
id varchar2(10) not null,
postdate date default sysdate not null,
visitcount number(6)
);
-- 외래키 설정
alter table board
add constraint board_mem_fk foreign key (id)
references member (id);
-- 시퀀스 생성
create sequence seq_board_num
increment by 1
start with 1
minvalue 1
nomaxvalue
nocycle
nocache;
② 더미 데이터 입력
-- 더미 데이터 입력
insert into member (id, pass, name) values ('musthave', '1234', '머스트해브');
insert into board (num, title, content, id, postdate, visitcount)
values (seq_board_num.nextval, '제목1입니다', '내용1입니다', 'musthave', sysdate, 0);
commit;
참고사항
① 계정 생성 : alter session set "_ORACLE_SCRIPT"=true 명령어는 system 계정에서만 사용 가능한 특수한 설정으로, 새로운 계정을 생성하기 위한 권한을 설정합니다.
② 테이블 스페이스 : alter user musthave quota 5m on users; 명령어를 통해 musthave 계정이 users 테이블 스페이스에서 5MB의 공간을 사용할 수 있도록 설정합니다.
③ 데이터 삽입 : 데이터 입력 후 commit; 명령어를 사용하여 트랜잭션을 완료합니다.
이 스크립트를 실행하면 새 사용자 계정 musthave가 생성되고, 관련 테이블과 시퀀스가 설정되며, 샘플 데이터가 삽입됩니다.
main.jsp
0.00MB
action.jsp
0.00MB
DB
create table employees (
employee_id number(4) primary key,
employee_name varchar2(20) not null,
department varchar2(20),
hire_date date,
salary number(10, 2)
);
insert into employees values (1, '김철수', '영업부', to_date('2023-06-15', 'YYYY-MM-DD'), 52000);
insert into employees values (2, '이영희', '마케팅부', to_date('2023-04-15', 'YYYY-MM-DD'), 62000);
COMMIT;
select * from employees;
select * from member where id = 'test';
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>사원 정보 관리</h1>
<form method="post" action="action.jsp">
<input type="hidden" name="action" id="action" value="">
<label for="employee_id">사원번호:</label>
<input type="text" id="employee_id" name="employee_id"><br>
<label for="employee_name">사원명:</label>
<input type="text" id="employee_name" name="employee_name"><br>
<label for="department">부서:</label>
<input type="text" id="department" name="department"><br>
<label for="hire_date">입사일:</label>
<input type="text" id="hire_date" name="hire_date"><br>
<label for="salary">급여:</label>
<input type="text" id="salary" name="salary"><br>
<input type="submit" value="조회" onclick="setAction('select')">
<input type="submit" value="등록" onclick="setAction('insert')">
<input type="submit" value="수정" onclick="setAction('update')">
<input type="submit" value="삭제" onclick="setAction('delete')">
</form>
<script>
function setAction(actionValue) {
document.getElementById("action").value = actionValue;
}
</script>
</body>
</html>
action.jsp
<%@ page import="common.JDBConnect"%>
<%@ page import = "java.sql.Statement" %>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.Connection" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String action = request.getParameter("action");
String employee_id = request.getParameter("employee_id");
String employee_name = request.getParameter("employee_name");
String department = request.getParameter("department");
String hire_date = request.getParameter("hire_date");
String salary = request.getParameter("salary");
JDBConnect jdbc = new JDBConnect();
switch (action) {
case "insert":
String sql = "insert into employees (employee_id, employee_name, department, hire_date, salary) values (?, ?, ?, sysdate, ?)";
PreparedStatement psmt = jdbc.con.prepareStatement(sql);
psmt.setString(1, employee_id);
psmt.setString(2, employee_name);
psmt.setString(3, department);
psmt.setString(4, salary);
int inResult = psmt.executeUpdate();
if (inResult > 0) {
out.println("Employee inserted successfully.");
} else {
out.println("Failed to insert employee.");
}
break;
case "update":
String update_sql = "UPDATE employees SET employee_name = ?, department = ?, hire_date = ?, salary = ? WHERE employee_id = ?";
PreparedStatement psmt1 = jdbc.con.prepareStatement(update_sql);
psmt1.setString(1, employee_name);
psmt1.setString(2, department);
psmt1.setString(3, hire_date);
psmt1.setString(4, salary);
psmt1.setString(5, employee_id);
int inResult1 = psmt1.executeUpdate();
if (inResult1 > 0) {
out.println("회원정보가 성공적으로 업데이트되었습니다.");
} else {
out.println("회원정보 업데이트에 실패했습니다.");
}
break;
case "delete":
String delete_sql = "delete from employees where employee_id = ?";
PreparedStatement psmt2 = jdbc.con.prepareStatement(delete_sql);
psmt2.setString(1, employee_id);
int inResult2 = psmt2.executeUpdate();
if (inResult2 > 0) {
out.println("회원정보가 성공적으로 삭제되었습니다.");
} else {
out.println("회원정보를 삭제하는데 실패했습니다.");
}
break;
case "select":
sql = "select * from employees"; // 블록 내부에서 값만 할당
Statement stmt = jdbc.con.createStatement();
//쿼리 수행
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
out.println("<tr>");
out.println("<td>" + rs.getString(1) +"</td>");
out.println("<td>" + rs.getString(2) +"</td>");
out.println("<td>" + rs.getString(3) +"</td>");
out.println("<td>" + rs.getString(4) +"</td>");
out.println("<td>" + "<br>");
}
break;
}
%>
</body>
</html>
728x90
반응형