우당탕탕 개발일지

16일차_과제 본문

비트캠프/과제

16일차_과제

ujin302 2024. 7. 24. 18:23
반응형

1. DB 생성 및 저장

 

# 테이블 작성

create table school (

  name varchar2(15) not null, -- 이름

  value varchar2(15), -- 학번 or 과목 or 부서

  code number -- 1이면 학생, 2이면 교수, 3이면 관리자

);

 

menu()

****************

관리

****************

1. 입력

2. 검색

3. 삭제

4. 종료

****************

번호선택 : 4

프로그램 종료합니다

 

1번 - insertArticle()

****************

1. 학생

2. 교수

3. 관리자

4. 이전메뉴

****************

번호선택 :

 

1-1번 학생

이름 입력 :

학번 입력 :

 

1-2번 교수

이름 입력 :

과목 입력 :

 

1-3번 관리자

이름 입력 :

부서 입력 :

1 행이 삽입되었습니다.

 

2번 검색 - selectArticle()

****************

1. 이름 검색 (1개 글자가 포함된 이름은 모두 검색)

2. 전체 검색

3. 이전메뉴

****************

번호선택 : 

2-1번 이름 검색

검색할 이름 입력 : 이

이름 = 이교수   과목= 자바

이름 = 이관리   부서= 기획

이름 = 이학생   학번= 2002

 

2-2번 전체 검색

이름 = 이교수  과목 = 자바

이름 = 코난     학번 = 2022

이름 = 홍길동 학번 = 2000

이름 = 이관리 부서 = 기획

이름 = 김교수 과목 = C

이름 = 이학생 학번 = 2002

 

3번 삭제 - deleteArticle()

삭제를 원하는 이름 입력 : (정확하게 3개의 글자가 모두 입력된 상태)

x개 행이 삭제되었습니다.

 

package school.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class SchoolMain {
	private String driver = "oracle.jdbc.driver.OracleDriver";
	private String url = "jdbc:oracle:thin:@localhost:1521:xe";
	private String username = "c##java";
	private String password = "1234";
	
	private Connection con;
	private PreparedStatement pstmt;
	private ResultSet rs;
	
	private Scanner sc = new Scanner(System.in);
	
	public SchoolMain() {
		// 1. JDBC Driver 로드   
		try {
			Class.forName(driver); 
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}
	
	public void getConnection() {
		// 2. DB 연결
		try { 
			con = DriverManager.getConnection(url, username, password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public void menu() {
		boolean isSelect = true;
		
		while(isSelect) {
			System.out.print("****************\n"
					+ " 관리\n"
					+ "****************\n"
					+ " 1. 입력\n"
					+ " 2. 검색\n"
					+ " 3. 삭제\n"
					+ " 4. 종료\n"
					+ "****************\n"
					+ " 번호선택 : ");
			int num = sc.nextInt();
			
			switch (num) {
			case 1:
				insertArticle();
				break;
			case 2:
				selectArticle();
				break;
			case 3:
				deleteArticle();
				break;
			case 4:
				isSelect = false;
				System.out.println("프로그램 종료합니다.");
				break;
			default:
				System.out.println("1~4번 중 입력하세요.\n");
				break;
			}
		}
	}

	public void insertArticle() {
		int num = 0;
		String name = null, value = null;
		boolean isSelect = true;
		
		
		
		while(isSelect) {
			System.out.print("****************\n"
					+ " 1. 학생\n"
					+ " 2. 교수\n"
					+ " 3. 관리자\n"
					+ " 4. 이전메뉴\n"
					+ "****************\n"
					+ " 번호선택 : ");
			num = sc.nextInt();	
			
			if(num > 4 || num <= 0) {
				System.out.println("1~4번 중 입력하세요.\n");
			}else if(num == 4) {
				isSelect = false;
				System.out.println("이전 메뉴로 돌아갑니다.");
			}else {
				System.out.print("이름 입력 : ");
				name = sc.next();
				
				switch (num) {
				case 1:
					System.out.print("학번 입력 : ");
					break;
				case 2:
					System.out.print("과목 입력 : ");
					break;
				case 3:
					System.out.print("부서 입력 : ");
					break;
				}
				value = sc.next();
				
				getConnection();
				
				// sql문
				try {
					pstmt = con.prepareStatement("insert into school values(?, ?, ?)");
					
					// 데이터 매핑
					pstmt.setString(1, name); 
					pstmt.setString(2, value);
					pstmt.setInt(3, num);
					
					// SQl문 실행
					int su = pstmt.executeUpdate(); 
					
					System.out.println(su + " 행이 삽입되었습니다.");
					
				} catch (SQLException e) {
					e.printStackTrace();
				} finally {
					try {
						if(pstmt != null) pstmt.close();
						if(con != null) con.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
	}

	public void selectArticle() {
		int num = 0;
		String sql = null;
		boolean isSelect = true;
		
		while(isSelect) {
			System.out.print("****************\n"
					+ " 1. 이름 검색 (1개 글자가 포함된 이름은 모두 검색)\n"
					+ " 2. 전체 검색\n"
					+ " 3. 이전메뉴\n"
					+ "****************\n"
					+ " 번호선택 : ");
			num = sc.nextInt();	
			
			if(num > 3 || num <= 0) {
				System.out.println("1~4번 중 입력하세요.\n");
			}else if(num == 3) {
				isSelect = false;
				System.out.println("이전 메뉴로 돌아갑니다.");
			}else {
				isSelect = false;
				String name = null;
				
				switch (num) {
				case 1:
					System.out.print("검색할 이름 입력 : ");
					name = sc.next();
					sql = "select * from school where name like ?";
					name = "%" + name + "%";
					break;
				case 2:
					sql = "select * from school";
					break;
				}
				
				getConnection();
				
				// sql문
				try {
					// 명령어 분석
					pstmt = con.prepareStatement(sql);
					
					// 데이터 매핑
					if(sql.contains("?")) {
						pstmt.setString(1, name); 
					}
					
					// SQl문 실행 및 결과 가져오기 
					rs = pstmt.executeQuery(); 
					
					while (rs.next()) {
						String nameDB = rs.getString("name"); 
						String valueDB = rs.getString("value"); 
						int codeDB = rs.getInt("code"); 
						
						switch (codeDB) {
						case 1:
							System.out.println("이름 : " + nameDB + "\t학번 : " + valueDB);
							break;
						case 2:
							System.out.println("이름 : " + nameDB + "\t과목 : " + valueDB);
							break;
						case 3:
							System.out.println("이름 : " + nameDB + "\t부서 : " + valueDB);
							break;
						}
					}
					
				} catch (SQLException e) {
					e.printStackTrace();
				} finally {
					try {
						if(rs != null) rs.close();
						if(pstmt != null) pstmt.close();
						if(con != null) con.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
			
		}
	}
	
	public void deleteArticle() {
		System.out.print("삭제를 원하는 이름 입력 : ");
		String name = sc.next();
		
		getConnection();
		
		try {
			// 3-1. SQL문 저장
			pstmt = con.prepareStatement("delete from school where name = ?"); 
			
			// 3-2. 데이터 매핑
			pstmt.setString(1, name);  
			
			// 3-3. SQl문 실행
			int su = pstmt.executeUpdate(); // 실행 : 개수 반환
			
			System.out.println(su + " 행이 삭제되었습니다.");
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(pstmt != null) pstmt.close();
				if(con != null) con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		new SchoolMain().menu();
	}

}

 

출력화면

1. 입력

 

 

2. 검색

 

 

3. 삭제

 

 

4. 종료

 

반응형

'비트캠프 > 과제' 카테고리의 다른 글

26일차_과제  (0) 2024.08.07
18일차_과제  (0) 2024.07.26
15일차_과제  (0) 2024.07.23
11일차_과제  (0) 2024.07.18
10일차_과제  (0) 2024.07.16