728x90
반응형
오늘도 역시 오라클에서 테이블 변경하는 것과 자바 연동을 배웠다.
심지어 jsp로 연결해서 브라우저에 띄우는 것도 연습했는데.. 뇌에 과부화 걸렸다
일단 오전에 한 것 부터 start
-- 2021-02-19 DDL
/*
DDL : 데이터 정의 언어
CREATE
=> 생성
1. 메모리 저장 공간 (데이터를 저장하는 공간) : 테이블
2. 가상으로 저장 (SQL문장의 단순화, 보안) : View (Read Only) => 가상 테이블
= 단순뷰 (한개의 테이블에서 데이터 가상으로 저장)
= 복합뷰 (한개이상 테이블에서 가상으로 저장) : JOIN, SUBQUERT
= 인라인뷰 (테이블대신 SELECT를 이용한다) : 페이지 나누기 (*****)
3. PL/SQL => 사용자정의 함수를 만드는 경우에 사용하는 언어
= FUNCTION : 리턴값을 가지고 있는 함수 => SUBSTR(), INSTR()...
= PROCEDURE : 리턴값이 없는 함수(void) => 실무 (ERP: 관리프로그램)에서 많이 사용
=> 포인터를 이용하고 있다, 매개변수로 실행 결과값을 받아서 처리 => 댓글게시판
= TRIGGER : 조건에 맞는 경우에 자동으로 실행 (오라클 자체에서 처리) => 자바에서는 코딩이 없다
소스 분석이 어렵다
4. INDEX : 찾기(최적)
DROP : 메모리에서 완전 삭제 (복구가 어렵다) => DBA, ADMIN => 포렌식
데이터 삭제
==========
= DELETE : 원하는 부분, 전체 삭제 (COMMIT이 없다)
= TRUNCATE : 전체 삭제 (COMMIT이 존재)
========== 테이블의 구조는 남아 있다
= DROP
========== 테이블의 구조까지 삭제
ALTER : COLUMN 단위로 수정 (제약조건까지 포함)
1. 추가
ADD
= ADD 컬럼명 데이터형
= ADD CONSTRAINT ~ 제약조건 추가 : PRIMARY KEY, FOREIGN KEY, CHECK, UNIQUE
2. 수정
MODIFY
= MODIFY 컬럼명 데이터형
= MODIFY CONSTRAINT ~ : NOT NULL
3. 삭제
DROP
= DROP COLUMN
= DROP CONSTRAINT
RENAME : 테이블 이름 변경, 컬럼명 변경 => 자바에서 테이블명은 보통 파일
= 테이블 이름 : RENAME old TO new
= 컬럼명 : ALTER TABLE table명 RENAME old TO new
TRUNCATE : 전체 데이터를 삭제 (잘라내기) = 테이블의 구조는 남아 있다
= TRUNCATR TABLE table명
테이블 제작 => 공유되는 데이터, 공유에 필요한 데이터만 추가
================ 재약조건 (수정, 삭제문제를 해결)
1. 중복이 없는 데이터는 반드시 한개 이상 필요하다 (데이터 무결성=기본키(priamry key)
* PRIMARY KEY는 한개만 생성 => 예외)
2. 다른 참조시에 존재하는 데이터만 참조할 수 있게 제약 => 참조 무결성=외래키 (참조키)
* FOREIGN KEY (반드시 PRIAMRY KEY를 참조)
3. 지정된 데이터만 참조 (CHECK)
4. 중복이 없는 데이터 추가 (NULL 허용 : UNIQUE (후보키)
5. 필수 입력 = NOT NULL
=> 테이블 생성시 제약조건 설정
=> 테이블을 미리 만들고 나중에 ALTER를 이용해서 추가
=> 제약조건을 관리 (ENABLE/DISABLE)
=> 어떤 데이터를 저장할지 확인
=> 사이트에 데이터 수집 : 모든 데이터를 가지고 올때 (문자열)
=> 오라클에서 지원하는 데이터형을 숙지
문자저장 : CHAR, VARCHAR2, CLOB
숫자저장 : NUMBER
날짜저장 : DATE
=> 테이블 만드는 형식
** 제약조건은 한개만 사용하는 것이 아니고 여러개를 사용할 수 있다
primary key => 2개
= UNIQUE + NOT NULL
CREATE TABLE table_name(
컬럼명 데이터형 [제약조건],
컬럼명 데이터형 [제약조건],
컬럼명 데이터형 [제약조건],
컬럼명 데이터형 [제약조건],
[제약조건]
);
=======================================
=> 1, 데이터 추가 (회원가입)
INSERT
=> 2. 데이터 수정 (3개월마다 비밀번호 수정)
UPDATE
=> 3. 데이터 삭제 (회원 탈퇴)
DELETE
======================================== 트랜잭션 (COMMUT(저장), ROLLBACK(명령취소))
*/
CREATE TABLE sawon (
sabun NUMBER(4),
name VARCHAR2(30),
sex VARCHAR2(10),
dept VARCHAR2(30),
job VARCHAR2(30),
hiredate DATE,
pay NUMBER CONSTRAINT sawon_pay_mm NOT NULL,
CONSTRAINT sawon_sabun_pk PRIMARY KEY (sabun),
CONSTRAINT sawon_sex_ck CHECK(sex IN('남자', '여자')),
CONSTRAINT sawon_dept_ck CHECK(dept IN('기획부', '개발부','영업부', '자재부', '총무부')),
CONSTRAINT sawon_job_ck CHECK(job IN('부장', '과장', '대리', '주임', '사원'))
);
INSERT INTO sawon VALUES(1, '이제노', '남자', '개발부', '대리', '18/02/19', 3600);
INSERT INTO sawon VALUES(2, '황인준', '남자', '기획부', '과장', '16/02/19', 5000);
INSERT INTO sawon VALUES(3, '박지성', '남자', '자재부', '사원', SYSDATE, 3000);
INSERT INTO sawon VALUES(4, '루카스', '남자', '총무부', '부장', '18/02/19', 7500);
INSERT INTO sawon VALUES(5, '이동혁', '남자', '개발부', '사원', SYSDATE, 3600);
INSERT INTO sawon VALUES(6, '이마크', '남자', '영업부', '주임', '18/02/19', 7500);
INSERT INTO sawon VALUES(7, '종천러', '남자', '기획부', '대리', SYSDATE, 3600);
COMMIT;
-- 숫자 : 숫자 첨부, 문자(날짜) : '' 날짜 => 'YY/MM/DD'
SELECT * FROM sawon;
-- 이제노 대리 => 진급 (과장, 4000)
UPDATE sawon SET
job='과장', pay=4000
WHERE sabun=1;
COMMIT;
SELECT * FROM sawon;
-- 황인준 퇴사 => DELETE
DELETE FROM sawon
WHERE sabun=2;
COMMIT;
SELECT * FROM sawon;
INSERT INTO sawon VALUES((SELECT NVL(MAX(sabun)+1,1) FROM sawon), '이마크', '남자', '영업부', '사원', SYSDATE, 3000);
SELECT * FROM sawon;
COMMIT; -- COMMIT이 없는 경우 (오라클에서는 실행, 자바에는 데이터를 가지고 올 수 없다)
-- 부서 변경 영업부 = 총무부 이동 (이마크)
UPDATE sawon SET
dept='총무부'
WHERE sabun=6;
COMMIT;
SELECT * FROM sawon;
DESC sawon;
테이블을 새로 만들어주고, DML을 이용해서 값을 변경하거나 삭제해주는 연습을 했다.
변경해준 뒤 꼭 COMMIT 해주기 잊지말기
이 뒤로는 오라클 연동을 계속 배웠는데, 일단 오라클에서 배운 VIEW먼저 복습하겠다.
-- 2021-02-19 VIEW, SUBQUERY
/*
1. View : 기존에 있는 테이블을 참조하는 가상테이블
= 보안 (메모리에 저장된 상태가 아니고 SELECT를 가지고 처리)
= 자바에서 코딩시 => SQL문장을 제작을 할때 SQL문장이 짧다
2. View의 종류
= 단순뷰 : 한개의 테이블을 이용
= 복합뷰 : 한개 이상의 테이블을 이용 (JOIN, Subquery)
= 인라인뷰 (*******) : SELECT를 테이블용으로 이용 => 페이지 나누기
3. SELECT : 검색시 주로 사용
= 데이터 검색
= 컬럼대신 사용 : 스칼라 서브쿼리
= 테이블 대신 사용 : 인라인뷰, Top-N
4. 단순뷰
뷰생성
CREATE VIEW view_name
AS
(SELECT * FROM emp);
= INSERT, UPDATE ,DELETE, => View에서 처리하는게 아니라 참조한 테이블에서 처리
= 뷰 옵션 : WITH CHECK OPTION, READ ONLY
*/
CREATE TABLE emp_test
AS
SELECT * FROM emp;
-- 확인
SELECT * FROM emp_test;
DESC emp;
DESC emp_test;
-- View : WITH CHECK OPTION (default) => INSERT, UPDATE, DELETE => 테이블에 영향
-- 단순뷰 (emp_test 테이블)
CREATE VIEW emp_view
AS
(SELECT * FROM emp_test);
SELECT * FROM emp_view;
SELECT empno, ename, hiredate, job FROM emp_view;
INSERT INTO emp_view VALUES(8000, '홍길동', '대리', 7788, SYSDATE, 3000, 100, 10);
SELECT * FROM emp_view;
-- 문제점
SELECT * FROM emp_test; -- 테이블에 저장됨
DELETE FROM emp_view;
ROLLBACK;
-- 뷰 삭제
DROP VIEW emp_view;
-- 뷰 수정
CREATE OR REPLACE VIEW emp_view
AS
SELECT * FROM emp_test WITH READ ONLY; -- DML을 사용 할 수 없다
-- WITH CHECK OPTION => DML 사용이 가능
-- 전체 데이터 출력
SELECT * FROM emp_view;
-- View (보여만 준다 => 읽기 전용)
-- 복합뷰 : 여러개의 테이블에서 필요한 데이터만 추출해서 가상으로 사용
-- JOIN
CREATE OR REPLACE VIEW emp_dept_salgrade
AS
SELECT empno, ename, job, hiredate, sal, dname, loc, grade
FROM emp, dept, salgrade
WHERE emp.deptno=dept.deptno
AND sal BETWEEN losal AND hisal;
SELECT * FROM emp_dept_salgrade; -- DML 사용할 수 없다
DROP VIEW emp_dept_salgrade;
-- 같은 컬럼명을 저장할때 별칭을 이용한다
CREATE OR REPLACE VIEW myView
AS
SELECT e1.ename "my", e2.ename "you"
FROM emp e1, emp e2
WHERE e1.mgr=e2.empno(+);
SELECT * FROM myView;
-- 인라인뷰
SELECT empno, ename, job, hiredate, sal, deptno
FROM (SELECT empno, ename, job, hiredate, sal, deptno FROM emp);
SELECT empno, ename, job, dname, loc
FROM (SELECT *
FROM emp,dept
WHERE emp.deptno=dept.deptno);
SELECT ename, empno, ename, job, sal, rownum
FROM emp;
-- 5개 (검색어 10개, 최신뉴스 10....)
SELECT empno, ename, job, sal, rownum
FROM emp
WHERE rownum<=5;
-- TOP-N
-- 인라인뷰 단점 : 중간에서 자를 수 없다
SELECT empno, ename, job, sal, rownum
FROM (SELECT empno, ename, job,sal FROM emp ORDER BY sal DESC)
WHERE rownum<=5;
VIEW는 기존에 있던 테이블에서 가져와서 가상 테이블을 만들어 주는 기능이다. 다만 단순뷰를 사용해서 값을 변경해줬을때는 위와 같이 기존에 있던 테이블의 값도 변경되기 때문에 주의해야 한다.
package com.sist.dao;
/*
* 1. 오라클 연결
* Connection
* 오라클로 SQL을 전송
* PreparedStatement : SQL전송 ,실행결과값을 받는다
* 오라클에서 받은 결과값을 저장
* ResultSet
* # 오라클이 실행 => SQL => 자바에서 SQL문장을 만들어서 전송
* # 브라우저가 실행 => HTML => 자바에서 HTML만들어서 브러우저로 전송
*
* 사용자 요청 SQL문장을 전송
* 브라우저 ====== 자바 ======= 오라클
* HTML로 전송 실행 결과를 보내준다 ==> JSP
* ==== 기능(브라우저에 실행하는 언어)
* 2. 오라클 연결전에 드라이버를 설치 Class.forName("오라클 드라이버")
* 자바 <=> 오라클 (X) (oci=> 유료)
* 자바 <=> 드라이버 <=> 오라클 (thin)
* 3. 결과값을 받는 경우
* ===== 단위가 Record (컬럼값 여러개가 들어 온다) => while문 한번 수행이
* 전체 데이터를 받아서 저장 (VO) => VO여러개 모아서 저장(컬렉션)
* # 라이브러리 => 표준화(모든 개발자가 동일하게 코딩) => 누가 SQL문장을 잘 만드는지...
*/
import java.sql.*;
import java.util.*;
public class SawonDAO {
// 오라클 연결에 필요한 클래스를 가지고 온다
// 1. 연결
private Connection conn; // Socket이용 => TCP
// 2. 전송 (SQL문장을 전송)
private PreparedStatement ps; // OutputStrem (전송), BufferedReader(수신)
// 3. 오라클 주소 => jdbc:업체명:IP:PORT:데이터베이스(테이블 저장되어 있는 데이터베이스(폴더)) => XE
private final String URL="jdbc:oracle:thin:@localhost:1521:XE";
// 1. 드라이버 등록 => 한번만 수행이 가능 (한번만 호출이 가능 메소드 => 생성자)
public SawonDAO()
{
// JDBC (Network) => CheckException => 반드시 예외처리를 해야된다
try
{
Class.forName("oracle.jdbc.driver.OracleDriver"); // 오라클에서 연결이 가능하게 만든 클래스
// 대소문자 구분 ==> 방식 = 패키지.클래스명 => 클래스의 정보를 읽어서 메모리 할당
// 등록 : 패키지.클래스 => 메모리 할당을 요청
// 1. new , 2. Class.forName() => 스프링(사용자 정의 클래스 관리자)
// new를 사용하면 => 결합성이 높은 프로그램
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
// 2. 연결,해제를 반복 => 한사람당 1개의 Connection만 사용이 가능하게 만든다 (XE:연습용=>50개이상)
public void getConnection()
{
try
{
conn=DriverManager.getConnection(URL,"hr","happy");
// conn hr/happy
}catch(Exception ex) {}
}
// 3. 해제
public void disConnection()
{
try
{
if(ps!=null) ps.close();
if(conn!=null) conn.close();
}catch(Exception ex) {}
}
// 싱글턴 => Web을 사용하기전에 디자인패턴
// 4. 각 테이블마다 기능 (SELECT , INSERT , UPDATE ,DELETE) => CURD
// 기능 1 => 전체 목록을 출력 VO를 여러개 저장 ArrayList
public ArrayList<SawonVO> selectList()
{
ArrayList<SawonVO> list=new ArrayList<SawonVO>();
try
{
// 목록 => 페이지 나누기 (인라인뷰)
getConnection();//오라클 연결
// SQL문장을 만들어서 오라클 전송할 준비
String sql="SELECT sabun,name,sex,dept,job,hiredate "
+"FROM sawon "
+"ORDER BY 1"; // sql문장은 무조건 문자열로 만든다
ps=conn.prepareStatement(sql);
// 오라클에 요청 => SQL문장을 실행한 후에 결과값을 달라
ResultSet rs=ps.executeQuery();
// 처음부터 끝까지 => 데이터를 읽어오기 시작 => next()
while(rs.next())
{
SawonVO vo=new SawonVO();
vo.setSabun(rs.getInt(1));
vo.setName(rs.getString(2));
vo.setSex(rs.getString(3));
vo.setDept(rs.getString(4));
vo.setJob(rs.getString(5));
vo.setHiredate(rs.getDate(6));
list.add(vo);
}
rs.close();
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
finally
{
disConnection();//오라클 연결 해제
}
return list;
}
// 기능 2 => 사원정보 상세보기 VO한개에 값을 채운다
public SawonVO selectOne(int sabun) // 반드시 중복이 없는 데이터(Primary Key)
{
SawonVO vo=new SawonVO();
try
{
// 연결
getConnection();
// SQL문장 제작
String sql="SELECT * "
+"FROM sawon "
+"WHERE sabun=?";
ps=conn.prepareStatement(sql);
// ?에 값을 채운다
ps.setInt(1, sabun); // 문자열 => setString() , 날짜 => setDate()
// 번호 => ?의 순서 => 오라클(번호가 1번부터 시작한다)
// ?,?,? => 1,2,3
// 실행요청
ResultSet rs=ps.executeQuery();
rs.next();
// 결과값 받기
vo.setSabun(rs.getInt(1));
vo.setName(rs.getString(2));
vo.setSex(rs.getString(3));
vo.setDept(rs.getString(4));
vo.setJob(rs.getString(5));
vo.setHiredate(rs.getDate(6));
vo.setPay(rs.getInt(7));
rs.close();
}catch(Exception ex)
{
// 오류처리
System.out.println(ex.getMessage());
}
finally
{
// 오라클 해제
disConnection();
}
return vo;
}
// 기능 3 => 신입사원 추가 => 매개변수 INSERT => void(오라클 자체에서 처리)
public void insert(SawonVO vo) // 전체 데이터 가지고 있는 클래스를 매개변수로 사용 (매개변수는 3개 이상이면 => 클래스 사용)
{
try
{
// 정상 수행시 처리
// 1.연결
getConnection();
//2. sql문장 만들기
String sql="INSERT INTO sawon VALUES("
+"(SELECT NVL(MAX(sabun)+1,1) FROM sawon)," // 자동 증가 (Primary key 처리가능)
+"?,?,?,?,SYSDATE,?)";
// 전송 (오라클)
ps=conn.prepareStatement(sql);
// 실행전에 ?에 값을 채운다
ps.setString(1, vo.getName());
ps.setString(2, vo.getSex());
ps.setString(3, vo.getDept());
ps.setString(4, vo.getJob());
ps.setInt(5, vo.getPay());
// 실행 명령
ps.executeUpdate();
}catch(Exception ex)
{
// 오류 확인
System.out.println(ex.getMessage());
}
finally
{
// try, catch와 관련없이 무조건 수행하는 문장(데이터베이스, 네트워크)
// 오라클 닫기
disConnection();
}
}
// 기타
public ArrayList<String> sawonGetDept()
{
ArrayList<String> list=new ArrayList<String>();
try
{
getConnection();
String sql="SELECT DISTINCT dept FROM sawon";
ps=conn.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while(rs.next())
{
String dept=rs.getString(1);
list.add(dept);
}
rs.close();
}catch (Exception ex)
{
System.out.println(ex.getMessage());
}
finally
{
}
return list;
}
public ArrayList<String> sawonGetJob()
{
ArrayList<String> list=new ArrayList<String>();
try
{
getConnection();
String sql="SELECT DISTINCT job FROM sawon";
ps=conn.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while(rs.next())
{
String job=rs.getString(1);
list.add(job);
}
rs.close();
}catch (Exception ex)
{
System.out.println(ex.getMessage());
}
finally
{
}
return list;
}
// 기능 4 => 진급,급여변동 => 매개변수 UPDATE => void (오라클 자체 처리)
public void update(int sabun,String dept, String job, int pay)
{
try
{
getConnection();
// SQL문장 제작
String sql="UPDATE sawon SET "
+"dept=?, job=?, pay=? "
+"WHERE sabun=?";
ps=conn.prepareStatement(sql);
// ?에 값을 채운다
ps.setString(1, dept);
ps.setString(2, job);
ps.setInt(3, pay);
ps.setInt(4, sabun);
// 수정명령
ps.executeUpdate();
} catch (Exception ex)
{
System.out.println(ex.getMessage());
}
finally
{
disConnection();
}
}
// 기능 5 => 퇴사 => 매개변수 DELETE => void (오라클 자체 처리)
public void delete(int sabun)
{
try
{
// 연결
getConnection();
// SQL 문장 제작
String sql="DELETE FROM sawon "
+"WHERE sabun=?"; // commit을 수행
// 오라클 전송
ps=conn.prepareStatement(sql);
// 실행전에 ?가 있으면 반드시 값을 채워준다
ps.setInt(1, sabun);
// 실행
ps.executeUpdate();
/*
* executeUpdate() => COMMIT ==> INSERT, UPDATE, DELETE(오라클 데이터 변경시에 사용)
* executeQuery() => COMMIT이 없다 => SELECT
*/
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
finally
{
// 해제
disConnection();
}
}
// 기능 6 => 찾기 => ArrsyList SELECT => 리턴형 (목록: ArrayList, 한개 출력 : VO)
public ArrayList<SawonVO> sawonFindData(String name)
{
ArrayList<SawonVO> list = new ArrayList<SawonVO>();
try
{
// 연결
getConnection();
// SQL 문장 제작
String sql="SELECT * "
+"FROM sawon "
+"WHERE name LIKE '%'||?||'%'";
ps=conn.prepareStatement(sql);
// ?에 값을 채운다
ps.setString(1, name);
// 실행후에 결과값을 가지고 온다
ResultSet rs=ps.executeQuery();
while(rs.next())
{
SawonVO vo=new SawonVO();
vo.setSabun(rs.getInt(1));
vo.setName(rs.getString(2));
vo.setSex(rs.getString(3));
vo.setDept(rs.getString(4));
vo.setJob(rs.getString(5));
vo.setHiredate(rs.getDate(6));
vo.setPay(rs.getInt(7));
list.add(vo);
}
rs.close();
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
}
finally
{
disConnection(); // 해제
}
return list;
}
}
위에가 DAO 코드이다. 연결/해제 하는 부분은 전부 동일하고 실행후에 결과 값을 어떻게 채워올지가 달라진다.
아래는 실행해주는 MAIN 코드
package com.sist.main;
import java.util.*;
import com.sist.dao.*; // 다른패키지에 클래스가 존재하면 반드시 import를 이용해서 가지고 온다
public class UserMain {
public static void main(String[] args) {
System.out.println("===========사원 전체 목록============");
// 오라클로부터 데이터 읽기
SawonDAO dao=new SawonDAO();
ArrayList<SawonVO> list = dao.selectList();
// 읽어온 데이터를 출력한다
for(SawonVO vo:list)
{
System.out.println(vo.getSabun()+" "
+vo.getName()+" "
+vo.getSex()+" "
+vo.getDept()+" "
+vo.getJob()+" "
+vo.getHiredate());
}
System.out.println("=================================");
Scanner scan=new Scanner(System.in);
System.out.print("검색어를 입력하세요?:");
String name=scan.next();
ArrayList<SawonVO> fList=dao.sawonFindData(name);
for(SawonVO vo:fList)
{
System.out.println(vo.getSabun()+" "
+vo.getName()+" "
+vo.getSex()+" "
+vo.getDept()+" "
+vo.getJob()+" "
+vo.getHiredate());
}
// System.out.println("상세 볼 사번을 입력:");
// int sabun=scan.nextInt();
// SawonVO vo=dao.selectOne(sabun);
// System.out.println("사번:"+vo.getSabun());
// System.out.println("이름:"+vo.getName());
// System.out.println("성별:"+vo.getSex());
// System.out.println("부서:"+vo.getDept());
// System.out.println("직위:"+vo.getJob());
// System.out.println("입사일:"+vo.getHiredate());
// System.out.println("연봉:"+vo.getPay());
// System.out.print("퇴사할 사윈의 사번 입력:");
// int sabun=scan.nextInt();
// dao.delete(sabun);
// // 데이터 추가
// // 1. 이름 입력
// System.out.print("이름 입력:");
// String name=scan.next();
// // 2. 성별 입력
// System.out.print("성별을 선택하세요(남자, 여자):");
// String sex = scan.next();
// // 3. 부서 선택
// ArrayList<String> dList=dao.sawonGetDept();
// String temp="";
// System.out.println();
// for(String s:dList)
// {
// temp+=s+",";
// }
// temp=temp.substring(0, temp.lastIndexOf(","));
// System.out.println("부서를 선택하세요("+temp+"):");
// String dept=scan.next();
//
// // 4.직위 선택
// ArrayList<String> jList=dao.sawonGetJob();
// temp="";
// for(String s:jList)
// {
// temp+=s+",";
// }
// temp=temp.substring(0, temp.lastIndexOf(","));
// System.out.println("직위를 선택하세요("+temp+"):");
// String job=scan.next();
//
// // 5. 급여 입력
// System.out.print("급여 입력:");
// int pay=scan.nextInt();
//
// // VO로 모아서 => DAO로 전송 => 오라클 연결(INSERT)
// SawonVO vo=new SawonVO();
// vo.setName(name);
// vo.setSex(sex);
// vo.setDept(dept);
// vo.setJob(job);
// vo.setPay(pay);
//
// dao.insert(vo);
// System.out.println("사원 추가 완료");
// // 수정
// // 1. 수정할 사번 선택
// System.out.print("수정할 사원의 사번 입력:");
// int sabun=scan.nextInt();
// // 2. 부서 선택
// ArrayList<String> dList=dao.sawonGetDept();
// String temp="";
// System.out.println();
// for(String s:dList)
// {
// temp+=s+",";
// }
// temp=temp.substring(0, temp.lastIndexOf(","));
// System.out.println("부서를 선택하세요("+temp+"):");
// String dept=scan.next();
//
// // 3.직위 선택
// ArrayList<String> jList=dao.sawonGetJob();
// temp="";
// for(String s:jList)
// {
// temp+=s+",";
// }
// temp=temp.substring(0, temp.lastIndexOf(","));
// System.out.println("직위를 선택하세요("+temp+"):");
// String job=scan.next();
//
// // 4. 급여 입력
// System.out.print("급여 입력:");
// int pay=scan.nextInt();
//
// // 유저로부터 받은 값을 DAO로 전송 => 오라클로 SQL제작후에 전송
// dao.update(sabun, dept, job, pay);
// System.out.println("사원 수정 완료~!");
}
}
728x90
반응형
'programming > Gukbi' 카테고리의 다른 글
국비 교육 41일차 - 서브쿼리, html, 팀프로젝트 회의 (0) | 2021.02.23 |
---|---|
국비 교육 40일차 - View, Subquery (0) | 2021.02.22 |
국비 교육 38일차 - 제약조건 & 자바연동 (0) | 2021.02.19 |
국비 교육 37일차 - DML, 제약조건 (0) | 2021.02.17 |
국비 교육 36일차 - JOIN, JAVA-ORACLE 연동 (0) | 2021.02.16 |