우당탕탕 개발일지
16일차_과제 본문
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. 종료