상세 컨텐츠

본문 제목

java myslq 학생정보 프로그램

프로그래밍/JAVA

by RosetteNebula 2021. 1. 27. 20:07

본문

 

https://crescentm.tistory.com/406 해당 내용 필수 확인

 

mysql을 jdbc로 연동하여 학생정보 입력 / 출력 / 검색 / 수정 / 삭제를 하는 프로그램 입니다

 

특별한건 없습니다 클래스 분리 하시고 입출력, 프로그램 만드실수 있고 sql문법만 아시면 가능한 코드 입니다

 

처음에는 단순히 입력과 출력, 검색으로 시작하여 완성 후 수정, 삭제를 하면서

오류도 발생하고 없는 데이터 처리 하는 부분도 찾아 보면서 완성을 했습니다

 

 

class Main

public class Main {
	public static void main(String[] args) throws SQLException {
		new Drive();		
	}
}

 

 

class Menu

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;
	}
}

 

 

class Drive

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클래스에서 리턴 받은 값에 맞는 클래스를 호출 해줍니다

 

 

class Input

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에 저장을 합니다

 

 

class Output

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값을 가지게 됩니다

 

 

class Search

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세이고 데이터가 있다면 데이터 출력

나이 조건이 맞지 않다면 나이 조건 안내

데이터가 없다면 데이터가 없다고 안내

 

 

class Update

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문으로 데이터를 찾은 후

수정할 이름의 데이터가 있으면 수정될 이름과 나이를 입력받아 수정을 하고

없다면 데이터가 없다고 안내

 

 

class Delete

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문으로 해당 데이터를 검색 후

데이터가 있다면 삭제

없다면 데이터가 없다고 안내

관련글 더보기