Main 클래스(시작 클래스)
package Main;
import Manager.ClientManager;
public class Main {
public static void main(String[] args) {
new ClientManager(); // 고객 메니저 객체생성
}
}
고객정보 메뉴 클래스
package Manager;
import java.util.ArrayList;
import java.util.Scanner;
import DAO.ClientDAO;
public class ClientManager {
Scanner in = new Scanner(System.in);
// DB에 저장하기한 DTO
private ClientInfoDTO ci = null;
// DB에 연결하기위한 DAO
private ClientDAO c = new ClientDAO();
public ClientManager() { // 고객 메니저 생성자
menu();
}
private void menu() { // 메뉴선택 메서드
for (;;) {
set1();
int sel = in.nextInt();
in.nextLine();
if (sel == 1) {
addClientInfo();
} else if (sel == 2) {
listClientInfo();
} else if (sel == 3) {
modClientInfo();
} else if (sel == 4) {
delDlientInfo();
} else if (sel == 5) {
selClientInfo();
} else if (sel == 6) {
System.out.println("프로그램을 종료합니다");
break;
} else {
System.out.println("잘못된 번호입니다" + "\n" + "다시 입력해주세요");
}
}
}
// 고객정보 검색 메서드
// DB에 저장된 튜플을 고객 ID로 검색
private void selClientInfo() {
System.out.println("[검색] 고객 ID을 입력하세요");
String id = in.nextLine();
c.selClientInfo(id);
ArrayList<ClientInfoDTO> infoList = c.selClientInfo(id);
for (ClientInfoDTO c : infoList) {
c.prt();
System.out.println("========");
}
}
// 고객정보 삭제 메서드
// DB에 저장된 튜플을 고객 ID을 검색해 삭제
private void delDlientInfo() {
System.out.println("[삭제] 고객 ID을 입력하세요");
String id = in.nextLine();
c.delClientInfo(id);
}
// 고객정보 수정 메서드
// 고객 ID을 검색해 나머지 정보를 수정한다
private void modClientInfo() {
ci = new ClientInfoDTO();
System.out.println("[수정] 고객 ID를 입력하세요");
String id = in.nextLine();
if (c.chackId(id) > 0) {
System.out.println("[수정] 고객 이름를 입력하세요");
String name = in.nextLine();
System.out.println("[수정] 고객 비밀번호를 입력하세요");
String pass = in.nextLine();
System.out.println("[수정] 고객 주소를 입력하세요");
String addr = in.nextLine();
System.out.println("[수정] 고객 포인트를 입력하세요");
int point = in.nextInt();
in.nextLine();
ci.setId(id);
ci.setName(name);
ci.setPass(pass);
ci.setAddr(addr);
ci.setPoint(point);
c.modClientInfo(ci);
} else {
System.out.println("없는 ID입니다");
}
}
// 고객정보 전채 출력 메서드
// DB에 저장된 튜플 전체 출력
private void listClientInfo() {
ArrayList<ClientInfoDTO> infoList = c.ListClientInfo();
for (ClientInfoDTO c : infoList) {
c.prt();
System.out.println("========");
}
}
// 고객정보 입력 메서드
// 입력받은 정보(DTO)를 DB에 저장
private void addClientInfo() {
ci = new ClientInfoDTO();
System.out.println("고객 ID를 입력하세요");
String id = in.nextLine();
if (c.chackId(id) == 0) {
System.out.println("고객 이름를 입력하세요");
String name = in.nextLine();
System.out.println("고객 비밀번호를 입력하세요");
String pass = in.nextLine();
System.out.println("고객 주소를 입력하세요");
String addr = in.nextLine();
System.out.println("고객 포인트를 입력하세요");
int point = in.nextInt();
in.nextLine();
ci.setId(id);
ci.setName(name);
ci.setPass(pass);
ci.setAddr(addr);
ci.setPoint(point);
c.addClientinfo(ci);
} else {
System.out.println("이미 존재하는 ID입니다");
}
}
// 메뉴 출력세팅 메서드
private void set1() {
System.out.println("1. 고객 정보 입력");
System.out.println("2. 고객 정보 목록보기");
System.out.println("3. 고객 정보 수정");
System.out.println("4. 고객 정보 삭제");
System.out.println("5. 고객 정보 검색");
System.out.println("6. 프로그램 종료");
System.out.println("====메뉴를 선택해주세요====");
}
}
고객정보 DAO 클래스
package DAO;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import Manager.ClientInfoDTO;
public class ClientDAO {
// 커넥션 변수 선언
private Connection conn = null;
// DTO 변수 선언
private ClientInfoDTO ci = null;
//String타입 리턴값 저장 변수선언
private ResultSet rs = null;
// 리턴값 저장 리스트
private ArrayList<ClientInfoDTO> infoList = null;
// 생성자에서 오라클 드라이버 로딩
public ClientDAO() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("로드 성공");
} catch (ClassNotFoundException e) {
System.out.println("로드 실패");
}
}
// 연결 요청 메서드
// 사용할때마다 호출하기위해 메서드로 생성
public boolean connect() {
try {
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "system", "11111111");
System.out.println("연결 성공");
return true;
} catch (SQLException e) {
System.out.println("연결 실패");
return false;
}
}
// DB에서 튜플삭제 쿼리 전송
public void delClientInfo(String id) {
if (connect()) {
String sql = "delete from client where id=?";
try {
PreparedStatement psmt = conn.prepareStatement(sql);
psmt.setString(1, id);
psmt.executeUpdate();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
} else {
System.out.println("연결 할 수 없어 입력할수 없습니다");
}
}
// DB에서 튜플검색 쿼리전송 실행후 리턴값 저장
public ArrayList<ClientInfoDTO> selClientInfo(String word) {
infoList = new ArrayList<>();
if (connect()) {
String sql = "select * from client where id like ? or name like ? ";
try {
PreparedStatement psmt = conn.prepareStatement(sql);
psmt.setString(1, "%"+word+"%");
psmt.setString(2, "%"+word+"%");
rs = psmt.executeQuery();
while (rs.next()) {
ci = new ClientInfoDTO();
ci.setId(rs.getString("id"));
ci.setName(rs.getString("name"));
ci.setPass(rs.getString("pass"));
ci.setAddr(rs.getString("addr"));
ci.setPoint(rs.getInt("point"));
infoList.add(ci);
}
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return infoList;
} else {
System.out.println("연결 할 수 없어 입력할수 없습니다");
}
return null;
}
// DB에서 저장된 튜플 수정 쿼리 전송
public void modClientInfo(ClientInfoDTO ci) {
if (connect()) {
String sql = "update client set name=?,pass=?,addr=?,point=? where id=?";
try {
PreparedStatement psmt = conn.prepareStatement(sql);
psmt.setString(1, ci.getName());
psmt.setString(2, ci.getPass());
psmt.setString(3, ci.getAddr());
psmt.setInt(4, ci.getPoint());
psmt.setString(5, ci.getId());
int e = psmt.executeUpdate();
System.out.println(e + "건이 입력되었습니다");
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
} else {
System.out.println("연결 할 수 없어 입력할수 없습니다");
}
}
// DB에 저장된 튜플 내역 모두 보기 쿼리 전송
public ArrayList<ClientInfoDTO> ListClientInfo() {
infoList = new ArrayList<>();
if (connect()) {
String sql = "select * from client";
try {
Statement psmt = conn.createStatement();
rs = psmt.executeQuery(sql);
while (rs.next()) {
ci = new ClientInfoDTO();
ci.setId(rs.getString("id"));
ci.setName(rs.getString("name"));
ci.setPass(rs.getString("pass"));
ci.setAddr(rs.getString("addr"));
ci.setPoint(rs.getInt("point"));
infoList.add(ci);
}
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return infoList;
} else {
System.out.println("연결 할 수 없어 입력할수 없습니다");
}
return null;
}
// DB에서 ID중복 체크 쿼리, 존재하면 존재하는 갯수를 리턴
public int chackId(String id) {
if (connect()) {
String sql = "select count(*) cnt from client where id=?";
try {
PreparedStatement psmt = conn.prepareStatement(sql);
psmt.setString(1, id);
rs = psmt.executeQuery();
if (rs.next()) {
int cnt = rs.getInt("cnt");
return cnt;
}
conn.close();
} catch (SQLException e) {
}
}
return 0;
}
// DB에 입력받은 DTO정보를 튜플로 삽입하는 쿼리 전송
public void addClientinfo(ClientInfoDTO ci) {
if (connect()) {
String sql = "insert into client values (?,?,?,?,?)";
try {
PreparedStatement psmt = conn.prepareStatement(sql);
psmt.setString(1, ci.getId());
psmt.setString(2, ci.getName());
psmt.setString(3, ci.getPass());
psmt.setString(4, ci.getAddr());
psmt.setInt(5, ci.getPoint());
int e = psmt.executeUpdate();
System.out.println(e + "건이 입력되었습니다");
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
} else {
System.out.println("연결 할 수 없어 입력할수 없습니다");
}
}
}
고객정보 DTO 클래스
package Manager;
// id,이름,비밀번호,주소,포인트 정보의 Getter,Setter
public class ClientInfoDTO {
String id;
String name;
String pass;
String addr;
int point;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public void prt() {// 저장된 데이터 출력
System.out.println("고객 ID : "+id);
System.out.println("고객 이름 : "+name);
System.out.println("고객 비밀번호 : "+pass);
System.out.println("고객 주소 : "+addr);
System.out.println("고객 포인트 : "+point);
}
}