https://crescentm.tistory.com/406 해당 내용 필수 확인
mysql을 jdbc로 연동하여 학생정보 입력 / 출력 / 검색 / 수정 / 삭제를 하는 프로그램 입니다
특별한건 없습니다 클래스 분리 하시고 입출력, 프로그램 만드실수 있고 sql문법만 아시면 가능한 코드 입니다
처음에는 단순히 입력과 출력, 검색으로 시작하여 완성 후 수정, 삭제를 하면서
오류도 발생하고 없는 데이터 처리 하는 부분도 찾아 보면서 완성을 했습니다
public class Main {
public static void main(String[] args) throws SQLException {
new Drive();
}
}
public class Menu {
Scanner scan = new Scanner(System.in);
int menu(){
int menu = 0;
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.print("선택 : ");
menu = scan.nextInt();
return menu;
}
}
public class Drive {
Connection con;
Statement stmt;
ResultSet rs;
int menu;
public Drive() throws SQLException {
String url = "jdbc:mysql://localhost/testdb";
String id = "root";
String password = "1234";
con = DriverManager.getConnection(url, id, password);
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
run();
}
void run() throws SQLException {
for (;;) {
menu = new Menu().menu();
if (menu == 1) {
new Input().addStuInfo(stmt);
System.out.println();
}
if (menu == 2) {
new Output().getStuInfo(stmt, rs);
System.out.println();
}
if (menu == 3) {
new Search().searchStuInfo(stmt, rs);
System.out.println();
}
if(menu == 4) {
new Update().updateStuInfo(stmt, rs);
System.out.println();
}
if(menu == 5) {
new Delete().deleteStuInfo(stmt, rs);
System.out.println();
}
if (menu == 6) {
rs.close();
stmt.close();
con.close();
break;
}
}
}
}
생성자에서 DB연동을 해주고 Menu클래스에서 리턴 받은 값에 맞는 클래스를 호출 해줍니다
public class Input {
Scanner scan = new Scanner(System.in);
void addStuInfo(Statement stmt) throws SQLException {
System.out.print("학생 이름을 입력 하세요 : ");
String name = scan.next();
System.out.print("학생 나이를 입력하세요(20~100) : ");
int age = scan.nextInt();
if(20 <= age && age <= 100) {
stmt.executeUpdate("insert into student values ('" + name + "', " + age + ")");
}
else if(age < 20 || 100 < age) {
System.out.println("나이는 20부터 100 사이로 입력해 주세요.");
}
}
}
학생 이름과 나이를 Scanner로 입력 받고
나이 조건인 20세~100세 사이인지 확인을 하여
sql문으로 DB에 저장을 합니다
public class Output {
void getStuInfo(Statement stmt, ResultSet rs) throws SQLException {
rs = stmt.executeQuery("select * from student");
if (rs.next()) {
rs.beforeFirst();
while (rs.next()) {
System.out.println("학생 이름 : " + rs.getString("name") + ", 학생 나이 : " + rs.getInt("age"));
}
}
else if (!rs.next()) {
System.out.println("입력된 학생 정보가 없습니다.");
}
rs.close();
}
}
ResultSet에 sql문으로 DB의 모든 데이터를 검색 후
데이터가 있다면 데이터를 출력 해주고
데이터가 없다면 데이터가 없다고 안내
여기서 rs.next()는 sql문을 사용하여 해당 데이터가 있으면 true를 없다면 false값을 가지게 됩니다
public class Search {
Scanner scan = new Scanner(System.in);
void searchStuInfo(Statement stmt, ResultSet rs) throws SQLException {
System.out.print("검색할 학생 나이를 입력 하세요(20~100) : ");
int age = scan.nextInt();
rs = stmt.executeQuery("select * from student where age >= " + age + " order by age");
if (20 <= age && age <= 100 && rs.next()) {
rs.beforeFirst();
while (rs.next()) {
System.out.println("학생 이름 : " + rs.getString("name") + ", 학생 나이 : " + rs.getInt("age"));
}
} else if (age < 20 || 100 < age) {
System.out.println("나이는 20부터 100 사이로 입력해 주세요.");
}
//DB에 찾는 값이 없을 경우
else if(!rs.next()) {
System.out.println("검색된 학생의 정보가 없습니다.");
}
rs.close();
}
}
나이로 검색을 하기 위해
Scanner로 나이를 입력 받고
sql문으로 입력받은 나이 이상의 데이터를 DB에서 찾고
나이 조건인 20세~100세이고 데이터가 있다면 데이터 출력
나이 조건이 맞지 않다면 나이 조건 안내
데이터가 없다면 데이터가 없다고 안내
public class Update {
Scanner scan = new Scanner(System.in);
void updateStuInfo(Statement stmt, ResultSet rs) throws SQLException {
System.out.print("수정할 학생 이름을 입력 하세요 : ");
String name = scan.next();
rs = stmt.executeQuery("select * from student where name = '" + name +"'");
//DB에 수정할 값이 존재할 경우
if(rs.next()) {
System.out.print("수정될 학생 이름을 입력 하세요 : ");
String name2 = scan.next();
System.out.print("수정될 학생의 나이를 입력 하세요 : ");
String age = scan.next();
stmt.executeUpdate("update student set name = '" + name2 + "', age = " + age + " where name = '" + name + "'");
}
else {
System.out.println("검색된 학생의 정보가 없습니다.");
}
rs.close();
}
}
수정할 학생 이름을 Scanner로 입력 받고
sql문으로 데이터를 찾은 후
수정할 이름의 데이터가 있으면 수정될 이름과 나이를 입력받아 수정을 하고
없다면 데이터가 없다고 안내
public class Delete {
Scanner scan = new Scanner(System.in);
void deleteStuInfo(Statement stmt, ResultSet rs) throws SQLException {
System.out.print("삭제할 학생 이름을 입력 하세요 : ");
String name = scan.next();
rs = stmt.executeQuery("select * from student where name = '" + name + "'");
//DB에 삭제할 값이 존재할 경우
if (rs.next()) {
stmt.executeUpdate("delete from student where name = '" + name + "'");
} else {
System.out.println("삭제할 학생의 정보가 없습니다.");
}
rs.close();
}
}
Scanner로 삭제할 학생의 이름을 입력 받고
sql문으로 해당 데이터를 검색 후
데이터가 있다면 삭제
없다면 데이터가 없다고 안내
JAVA Scanner 사용 시 잘못된 타입 입력 오류 처리 (1) | 2021.01.28 |
---|---|
JDBC ResultSet 위치 이동 (4) | 2021.01.28 |
java로 DB 검색 후 값이 없을때 (0) | 2021.01.27 |
Thread 클래스의 주요 메서드 (0) | 2021.01.26 |
JAVA swing TextArea 사이즈 조절 (0) | 2021.01.25 |