--------------------------------------
직원 관리
- 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 |