DB 생성 시 PK ( Primary key ) 는 있어야 한다.
A 테이블에서 PK는 unique and not null 이어야 한다.
A 테이블에서 FK는 다른 B 테이블에서 PK이다.
A 테이블의 이 FK로 B 테이블과 관계 ( relation ) 를 맺을 수 있다. <= Join이 가능
hr / rootoor 접속
show user;
// HR 접속자 확인
-----------------------------------------
// 테이블 생성
create table dept(
deptno number(3) primary key,
dname varchar2(10),
loc varchar2(10));
)
-----------------------------------------
// 데이터 입력
insert into dept values(10, '총무부', 101);
insert into dept values(20, '영업부', 202);
insert into dept values(30, '전산실', 303);
insert into dept values(40, '관리부', 404);
insert into dept values(50, '경리부', 505);
-----------------------------------------
// table 생성
create table gogaek(
gobun number(3) primary key,
goname varchar2(30),
goaddr varchar2(30),
godam number(3)
);
-----------------------------------------
// 데이터 입력
insert into gogaek values(1, '송강', '서울 강남구', 3);
insert into gogaek values(2, '정철', '대전 유성구', 4);
insert into gogaek values(3, '무송', '서울 강서구', 10);
insert into gogaek values(4, '진평', '인천 계양구', 1);
insert into gogaek values(5, '소하', '서울 마포구', 10);
-----------------------------------------
// table 생성
create table sawon(
sabun number(3) primary key,
saname varchar2(20),
sagene varchar2(10),
deptno number(3),
sajob varchar2(10),
sahire date,
samgr number(3),
sapay number(8)
);
-----------------------------------------
// 데이터 입력
insert into sawon values(1, '손권', '남자', 40, '부장', '1993-07-25', null, 4000);
insert into sawon values(2, '조조', '남자', 20, '부장', '1988-02-25', null, 4000);
insert into sawon values(3, '순욱', '여자', 20, '대리', '1998-03-25', 2, 3500);
-----------------------------------------
commit;
class 파일
package vo;
public class DeptVO {
int deptNo;
String dName;
String loc;
public int getDeptNo() {
return deptNo;
}
public void setDeptNo (int deptNo) {
this.deptNo = deptNo;
}
public String getdName() {
return dName;
}
public void setdName(String dName) {
this.dName = dName;
}
public String getLoc() {
return loc;
}
public void setLoc (String loc) {
this.loc = loc;
}
}
jdbc_dept.jsp
아래 코드로 부서번호를 누르면 해당 jdbc_dept.jsp 파일 내용 변경(추가된다)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="vo.DeptVO" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%
InitialContext ic = new InitialContext();
Context ctx = (Context)ic.lookup("java:comp/env");
DataSource dataSource = (DataSource)ctx.lookup("jdbc/oracl_test");
Connection conn = dataSource.getConnection(); // Connection 연결 객체 생성
// out.println("-- 연결 성공 --");
String sql = "select * from dept";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
ArrayList<DeptVO> dept_list = new ArrayList<>(); // 부서 목록에 들어갈 어레이리스트 생성
while (rs.next()) {
DeptVO vo = new DeptVO();
vo.setDeptNo(rs.getInt("deptno"));
vo.setdName(rs.getString("dname"));
vo.setLoc(rs.getString("loc"));
dept_list.add(vo);
}
rs.close();
pstmt.close();
conn.close();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
function send(data) {
var f = document.getElementById("m_form");
var hid = document.getElementById("hid");
hid.value = data;
f.submit();
}
</script>
</head>
<body>
<form id="m_form" action="sawon_list.jsp">
<table border="1">
<caption>부서목록</captioin>
<tr>
<th>부서번호</th>
<th>부서명</th>
<th>부서위치</th>
</tr>
<%
for(int i=0; i<dept_list.size(); i++) {
DeptVO dv = dept_list.get(i);
%>
<tr>
<td><%= dv.getDeptNo() %></td>
<td>
<a href="javascript:send('<%= dv.getDeptNo() %>');" name="deptno"><% dv.getdName() %></a>
</td>
<td><%= dv.getdName() %></td>
<td><%= dv.getLoc() %></td>
</tr>
<%
}
%>
</table>
<input type="hidden" value="" id="hid" name="deptno">
</form>
</body>
</html>
SawonVO class 생성
package vo;
publick class SawonVO {
int sabun;
String saName;
String saJob;
int deptNo;
public int getSabun() {
return sabun;
}
public void setSabun(int sabun) {
this.sabun = sabun;
}
public String getSaName() {
return saName;
}
public String getSaJob() {
return saJob;
}
public void setSaJob(String saJob) {
this.saJob = saJob;
}
public int getDeptNo() {
return deptNo;
}
public void setDeptNo(int deptNo) {
this.deptNo = deptNo;
}
}
WebContent > sawon_list.jsp 파일
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="vo.SawonVO" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="java.sql.Connection" %>
<!DOCTYPE html>
<% request.setCharacterEncoding("utf-8"); %>
<%
int deptno = Integer.parseInt(request.getParameter("deptno"));
InitialContext ic = new InitialContext();
Context ctx = (Context)ic.lookup("java:comp/env");
DataSource dataSource = (DataSource)ctx.lookup("jdbc/oracle_test");
Connection conn = dataSource.getConnection(); // 연결객체 얻어오기
//out.println("-- 연결 성공 --");
String sql="select * from sawon where deptno=" + deptno;
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
ArrayList<SawonVO> sawon_list = new ArrayList<>();
while(rs.next()) {
SawonVO vo = new SawonVO();
vo.setDeptNo(rs.getInt("deptno"));
vo.setSabun(rs.getInt("sabun"));
vo.setSaJob(rs.getString("sajob"));
vo.setSaName(rs.getString("saname"));
sawon_list.add(vo);
}
rs.close();
pstmt.close();
conn.close();
%>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<table border="1">
<caption>부서 목록</caption>
<tr>
<th>부서번호</th>
<th>사원번호</th>
<th>직책</th>
<th>이름</th>
</tr>
<%
for(int i=0; i<sawon_list.size(); i++) {
sawonVO dv = sawon_list.get(i);
%>
<tr>
<td><%= dv.getDeptNo() %></td>
<td><%= dv.getSabun() %></td>
<td><%= dv.getSaJob() %></td>
<td><%= dv.getSaName() %></td>
</tr>
<%
}
%>
</table>
</body>
</html>
부서명을 누르면 부서원들의 리스트가 나온다
| JSP (DB연결, 성적 테스트) (0) | 2022.08.19 |
|---|---|
| JSP Templates(템플릿 이용, 부서 별 사원 입력 및 출력) (0) | 2022.08.19 |
| VO(Value Object), JSP 내장 객체, (여러가지 정보를 하나로 묶어 저장할 수 있게 만든 클래스 VO) (0) | 2022.08.16 |
| JSP 예제 (메서드 및 변수 출력, li 배열 출력, table 구구단 ) (0) | 2022.08.16 |
| JSP 개념 (접속자 IP 주소 얻어오기) (0) | 2022.08.16 |