8일차_직원관리

JDBC 2015. 6. 21. 07:31

--------------------------------------
직원 관리
- JDBC 프로그램 작성은 아래 순서를 따른다.
기능 구현 분석 > 화면 구성 > 데이터베이스(샘플 쿼리) 준비 > 클래스 구성 분석 > 액션 코드 작성 > 테스트

5. 소스 코드

//InsaDAO.java
package com.test;

import java.sql.*;
import java.util.*;

//데이터베이스 액션 클래스
public class InsaDAO {
 
 //직원 정보 출력 메소드
 //반환자료형 -> ArrayList<Insa>
 //매개변수 -> key -> 정렬 기준(사번, 이름, 지역, 부서, 직위)
 public ArrayList<Insa> list(String key) {
  ArrayList<Insa> result = new ArrayList<Insa>();
  
  //문제)
  //1. 데이터베이스 연결
  //2. SELECT 쿼리 준비
  //SELECT num, name, ssn, ibsadate, tel, city, buseo, jikwi
  // ,basicPay, sudang, pay
     //  FROM insaView
     //  ORDER BY num;
  //-> 정렬 액션은 데이터베이스에서 처리
  //-> ORDER BY 구문
  //-> SELECT 구문을 정렬 기준별로 작성
  //3. SELECT 쿼리 실행
  //4. 결과를 컬렉션 저장
  //5. 데이터베이스 연결 마무리
  //6. 결과 반환
  
  /*
  String sql = String.format("SELECT 쿼리...");
  switch (key) {
  case "사번": sql += " ORDER BY num"; break;
  case "이름": sql += " ORDER BY name"; break;
  ...
  }
  */
  String sql = String.format("SELECT 쿼리.... ORDER BY %s", key);  
  
  
  return result;
 }
 
 
 //직원 정보 검색 메소드
 //반환자료형 -> ArrayList<Insa>
 //매개변수 -> key, value -> 검색 기준(사번, 이름, 지역, 부서, 직위), 검색 단어
 //(->메소드 오버로딩)
 public ArrayList<Insa> list(String key, String value) {
  ArrayList<Insa> result = new ArrayList<Insa>();
  
  //문제)
  //1. 데이터베이스 연결
  //2. SELECT 쿼리 준비
  //-> 검색 기준별로 검색 액션 준비
  //-> 검색 액션은 WHERE 컬럼명=? 구문 준비
  //-> ORDER BY num
  //3. SELECT 쿼리 실행
  //4. 결과를 컬렉션 저장
  //5. 데이터베이스 연결 마무리
  //6. 결과 반환

  return result;
 }
 
 //직원 정보 삭제 메소드
 //반환자료형 -> int형 -> 삭제된 로우의 갯수 반환
 //매개변수 -> String num -> 사번을 외부에서 전달 받는다.
 public int remove(String num) {

  int result = 0;
  
  //문제)
  //데이터베이스 연결
  //삭제 쿼리 준비
  //DELETE FROM insa WHERE num=?
  //바인딩 문자열에 num 변수값 바인딩
  //삭제 쿼리 실행->결과값을 변수에 저장
  //데이터베이스 연결 마무리
  //결과값 반환
 
  
  return result;
  
 }
 
 
 //직원 정보 입력 메소드
 public int add(Insa insa) {
  int result = 0;
  
  //문제)
  //데이터베이스 연결
  //입력 쿼리 준비
  //INSERT INTO insa (num, name, ssn, ibsadate, tel
  //  , cid, bid, jid
  //  ,basicPay, sudang) 
     //  VALUES ((SELECT MAX(num)+1 AS newNum FROM insa)
  //  , ?, ?, ?, ?, ?, ?, ?, ?, ?)
  //바인딩 문자열에 변수값(insa.getXXX()) 바인딩
  //입력 쿼리 실행->결과값을 변수에 저장
  //데이터베이스 연결 마무리
  //결과값 반환  
  
  return result;
 }
 


}

 

 

//RemoveTest.java
package com.test;

import java.util.*;

public class RemoveTest {

 public static void main(String[] args) {

  InsaDAO dao = new InsaDAO();
  Scanner sc = new Scanner(System.in);
  
  String num = "1070";
  
  ArrayList<Insa> list = dao.list("num", num);
  
  if (list.size() > 0) {
   //검색 결과 있음->결과 출력 및 삭제 진행
   for (Insa i : list) {
    System.out.printf("출력 서식 지정"
      , "출력 항목 지정");
   }
   
   System.out.print("이 자료를 삭제하시겠습니까(Y/N)?");
   String m = sc.next();
   if (m.equalsIgnoreCase("y")) {
    //문제)
    //삭제 진행-> private 메소드
   }
   
   
  } else {
   //검색 결과 없음.
   System.out.println("검색 결과가 없습니다.");
  }
   
   
   
 }

}

 

 

//AddTest.java
package com.test;

import java.util.*;

public class AddTest {

 public static void main(String[] args) {

  InsaDAO dao = new InsaDAO();
  
  //외부에서 받는 데이터 자료형은 일단 String 자료형으로 처리.
  String name = "황길동";
  //...
  
  Insa insa = new Insa();
  //num 컬럼의 값은 자동 입력될 예정.
  insa.setName(name);
  //...
  
  //정상적인 입력 액션 -> 1개의 행이 삽입되었습니다.
  //에러 발생 -> 0개의 행이 삽입되었습니다.
  int result = dao.add(insa);
  System.out.printf("%d개의 행이 삽입되었습니다.%n", result);
  
  
 }

}

 


---------------------------------------------

 

 

'JDBC' 카테고리의 다른 글

10일차_직원관리_최종버전  (0) 2015.06.21
9일차_직원관리  (0) 2015.06.21
7일차_직원관리  (0) 2015.06.21
6일차_성적관리_최종버전  (0) 2015.06.21
5일차_성적관리  (0) 2015.06.21
블로그 이미지

알 수 없는 사용자

,