seunghyun Note
DB 연결을 통한 학교 관리 시스템 본문
728x90
반응형
오라클이 연동되어 있고 실행되어있다고 가정하고 시작!!!
field에 변수들 선언
url, driver, user, pwd 를 미리 설정한다.
driver 는 ojdbc11.jar에 있는 OracleDriver의 경로를 입력한다.
url 은 'jdbc:oracle:드라이버명:서버:port번호:데이터베이스의 이름' 으로 입력하기
user, pwd는 기존에 oracle에서 만들었던 아이디와 비밀번호를 입력하기.
private Connection con;
private PreparedStatement pstmt;
private ResultSet rs;
private String driver = "oracle.jdbc.driver.OracleDriver";
private String url = "jdbc:oracle:thin:@localhost:1521:XE";
private String user = "java";
private String pwd = "1234";
생성자 내에서 드라이버를 실행한다.
그리고 생성자 내에 getConnection을 만들어 ORACLE DB를 연결
public StudentMain() {
try {
Class.forName(driver);
System.out.println("Driver Loading Success!");
} catch (ClassNotFoundException e) {
System.out.println("드라이버 연동 실패!");
e.printStackTrace();
}
}
public void getConnection() {
try {
con = DriverManager.getConnection(url, user, pwd);
// System.out.println("DB 연결 성공!!");
} catch (SQLException e) {
e.printStackTrace();
}
}
메인 class는 생성자를 호출해 변수를 만들고 menu function만 실행한다
public static void main(String[] args) {
StudentMain studentMain = new StudentMain();
studentMain.menu();
}
menu function 실행 (case에 따른 명령 변경 및 함수 호출)
public void menu() {
boolean flag = true;
while (true) {
System.out.println("**************");
System.out.println("관리");
System.out.println("**************");
System.out.println("1. 입력");
System.out.println("2. 검색");
System.out.println("3. 삭제");
System.out.println("4. 종료");
System.out.println("**************");
System.out.print("번호선택 :");
int num = sc.nextInt();
switch (num) {
case 1:
insertArticle();
break;
case 2:
selectArticle();
break;
case 3:
deleteArticle();
break;
case 4:
flag = false;
break;
}
if (!flag)
break;
}
System.out.println("종료");
}
case 1 일 때 데이터 삽입 insertArticle() -> insert된 값을 저장하기 위해 insertData() function으로 넘어감
public void insertArticle() {
String name = null;
String value = null;
int code = 0;
boolean flag = true;
while (true) {
System.out.println("**************");
System.out.println("1. 학생");
System.out.println("2. 교수");
System.out.println("3. 관리자");
System.out.println("4. 이전메뉴");
System.out.println("**************");
System.out.print("번호선택 :");
int num = sc.nextInt();
switch (num) {
case 1:
System.out.print("이름 입력 : ");
name = sc.next();
System.out.print("학번 입력 : ");
value = sc.next();
code = 1;
break;
case 2:
System.out.print("이름 입력 : ");
name = sc.next();
System.out.print("과목 입력 : ");
value = sc.next();
code = 2;
break;
case 3:
System.out.print("이름 입력 : ");
name = sc.next();
System.out.print("부서 입력 : ");
value = sc.next();
code = 3;
break;
case 4:
flag = false;
break;
}
if (!flag)
break;
insertData(name, value, code);
}
}
case 2 일때 selectArticle() function 호출
-> 이름이 없을 때는 전체 출력 (getDataAll)
-> 이름이 있을 때는 이름 관련 출력(getData)
public void selectArticle() {
String name = null;
boolean flag = true;
while (true) {
System.out.println("**************");
System.out.println("1. 이름 검색");
System.out.println("2. 전체 검색");
System.out.println("3. 이전메뉴");
System.out.println("**************");
System.out.print("번호선택 :");
int num = sc.nextInt();
switch (num) {
case 1:
System.out.print("이름 입력 : ");
name = sc.next();
getData(name);
break;
case 2:
getDataAll();
break;
case 3:
flag = false;
break;
}
if (!flag)
break;
}
}
public void getData(String name) {
getConnection();
try {
String sql = "SELECT name,value,code FROM school where name like ?";
pstmt = con.prepareStatement(sql); // 생성
pstmt.setString(1, "%" + name + "%");
// 실행
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name") + "\t" + rs.getString("value") + "\t" + rs.getInt("code"));
}
} 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) {
e.printStackTrace();
}
}
}
public void getDataAll() {
getConnection();
String sql;
try {
sql = "select * from school";
pstmt = con.prepareStatement(sql); // 생성
// 실행
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name") + "\t" + rs.getString("value") + "\t" + rs.getInt("code"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
// 생성의 반대로 close 해야한다 . con , pstmt -> pstmt ,con
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();
}
}
}
case 3 일때 : deleteArticle() function 호출 - 데이터 삭제
public void deleteArticle() {
getConnection();
System.out.print("이름 입력 : ");
String name = sc.next();
try {
String sql = "DELETE FROM school where name=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, name);
int su = pstmt.executeUpdate(); // 실행 -> 개수 return
System.out.println(su + "개의 행이 삭제되었습니다.");
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (pstmt != null)
pstmt.close();
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
최종 코드
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 StudentMain {
private Connection con;
private PreparedStatement pstmt;
private ResultSet rs;
private String driver = "oracle.jdbc.driver.OracleDriver";
private String url = "jdbc:oracle:thin:@localhost:1521:XE";
private String user = "java";
private String pwd = "1234";
public StudentMain() {
try {
Class.forName(driver);
System.out.println("Driver Loading Success!");
} catch (ClassNotFoundException e) {
System.out.println("드라이버 연동 실패!");
e.printStackTrace();
}
}
public void getConnection() {
try {
con = DriverManager.getConnection(url, user, pwd);
// System.out.println("DB 연결 성공!!");
} catch (SQLException e) {
e.printStackTrace();
}
}
Scanner sc = new Scanner(System.in);
public void insertArticle() {
String name = null;
String value = null;
int code = 0;
boolean flag = true;
while (true) {
System.out.println("**************");
System.out.println("1. 학생");
System.out.println("2. 교수");
System.out.println("3. 관리자");
System.out.println("4. 이전메뉴");
System.out.println("**************");
System.out.print("번호선택 :");
int num = sc.nextInt();
switch (num) {
case 1:
System.out.print("이름 입력 : ");
name = sc.next();
System.out.print("학번 입력 : ");
value = sc.next();
code = 1;
break;
case 2:
System.out.print("이름 입력 : ");
name = sc.next();
System.out.print("과목 입력 : ");
value = sc.next();
code = 2;
break;
case 3:
System.out.print("이름 입력 : ");
name = sc.next();
System.out.print("부서 입력 : ");
value = sc.next();
code = 3;
break;
case 4:
flag = false;
break;
}
if (!flag)
break;
insertData(name, value, code);
}
}
public void insertData(String name, String value, int code) {
getConnection();
try {
String sql = "insert into school(name, value, code) values (?,?,?)";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, value);
pstmt.setInt(3, code);
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) {
e.printStackTrace();
}
}
}
public void getDataAll() {
getConnection();
String sql;
try {
sql = "select * from school";
pstmt = con.prepareStatement(sql); // 생성
// 실행
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name") + "\t" + rs.getString("value") + "\t" + rs.getInt("code"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
// 생성의 반대로 close 해야한다 . con , pstmt -> pstmt ,con
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 getData(String name) {
getConnection();
try {
String sql = "SELECT name,value,code FROM school where name like ?";
pstmt = con.prepareStatement(sql); // 생성
pstmt.setString(1, "%" + name + "%");
// 실행
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name") + "\t" + rs.getString("value") + "\t" + rs.getInt("code"));
}
} 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) {
e.printStackTrace();
}
}
}
public void selectArticle() {
String name = null;
boolean flag = true;
while (true) {
System.out.println("**************");
System.out.println("1. 이름 검색");
System.out.println("2. 전체 검색");
System.out.println("3. 이전메뉴");
System.out.println("**************");
System.out.print("번호선택 :");
int num = sc.nextInt();
switch (num) {
case 1:
System.out.print("이름 입력 : ");
name = sc.next();
getData(name);
break;
case 2:
getDataAll();
break;
case 3:
flag = false;
break;
}
if (!flag)
break;
}
}
public void deleteArticle() {
getConnection();
System.out.print("이름 입력 : ");
String name = sc.next();
try {
String sql = "DELETE FROM school where name=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, name);
int su = pstmt.executeUpdate(); // 실행 -> 개수 return
System.out.println(su + "개의 행이 삭제되었습니다.");
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (pstmt != null)
pstmt.close();
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void menu() {
boolean flag = true;
while (true) {
System.out.println("**************");
System.out.println("관리");
System.out.println("**************");
System.out.println("1. 입력");
System.out.println("2. 검색");
System.out.println("3. 삭제");
System.out.println("4. 종료");
System.out.println("**************");
System.out.print("번호선택 :");
int num = sc.nextInt();
switch (num) {
case 1:
insertArticle();
break;
case 2:
selectArticle();
break;
case 3:
deleteArticle();
break;
case 4:
flag = false;
break;
}
if (!flag)
break;
}
System.out.println("종료");
}
public static void main(String[] args) {
StudentMain studentMain = new StudentMain();
studentMain.menu();
}
}
728x90
반응형
'스터디 > JAVA' 카테고리의 다른 글
JAVA 성적 DTO 만들기 (1) | 2024.01.05 |
---|---|
JAVA 자동 Calendar 만들기 (3) | 2024.01.04 |