Java
DTO, DAO를 이용한 sql CRUD 예제 2 (학생 관리 프로그램)
에띠
2022. 4. 26. 13:59
728x90
tb_student 테이블 생성
학번, 이름, 연락처, 성별, 등록날짜
studentDTO 클래스와 studentDAO 클래스를 사용하여 아래 기능을 구현하는 프로그램을 만들어보자.
********** 메뉴 **********
1. 학생 등록 2. 학생 리스트 3. 학생 검색 4. 학생 수정 5. 학생 삭제 6. 프로그램 종료
메뉴를 입력하세요 > 1
✅ 키(key)는 학번으로 사용
테이블 생성 쿼리
create table tb_student(
stu_idx bigint auto_increment primary key,
stu_num varchar(20) not null,
stu_name varchar(20) not null,
stu_hp varchar(20) not null,
stu_gender enum('남자', '여자') not null,
stu_rdate datetime default now()
);
DB연결
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnDb {
private static Connection conn;
public static Connection getConnection() throws SQLException, ClassNotFoundException {
String url = "jdbc:mysql://127.0.0.1/aiclass?useSSL=false";
String userid = "root";
String userpw = "1234";
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url, userid, userpw);
return conn;
}
public static void close() {
try {
conn.close();
conn = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
학생 DTO
public class stuDTO {
private String stuNum;
private String name;
private String hp;
private String gender;
private String rdate;
public stuDTO(String stuNum, String name, String hp, String gender, String rdate) {
this.stuNum = stuNum;
this.name = name;
this.hp = hp;
this.gender = gender;
this.rdate = rdate;
}
public String getStuNum() {
return stuNum;
}
public void setStuNum(String stuNum) {
this.stuNum = stuNum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHp() {
return hp;
}
public void setHp(String hp) {
this.hp = hp;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getRdate() {
return rdate;
}
public void setRdate(String rdate) {
this.rdate = rdate;
}
@Override
public String toString() {
return "stuDTO{" +
"stuNum=" + stuNum +
", name='" + name + '\'' +
", hp='" + hp + '\'' +
", gender='" + gender + '\'' +
", rdate='" + rdate + '\'' +
'}';
}
}
학생 DAO
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class stuDAO {
Connection conn;
StringBuilder sql;
Scanner sc;
PreparedStatement pstmt;
ResultSet rs;
public void insert() throws SQLException {
sc = new Scanner(System.in);
System.out.print("학번을 입력하세요 > ");
String stuNum = sc.next();
System.out.print("이름을 입력하세요 > ");
String name = sc.next();
System.out.print("연락처를 입력하세요 > ");
String hp = sc.next();
System.out.print("성별을 입력하세요 > ");
String gender = sc.next();
try {
conn = ConnDb.getConnection();
sql = new StringBuilder();
sql.append("insert into tb_student (stu_num, stu_name, stu_hp, stu_gender)");
sql.append("values (?, ?, ?, ?)");
pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1, stuNum);
pstmt.setString(2, name);
pstmt.setString(3, hp);
pstmt.setString(4, gender);
int result = pstmt.executeUpdate();
if (result >= 1) System.out.println("학생등록 성공");
else System.out.println("학생등록 실패");
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnDb.close();
pstmt.close();
pstmt = null;
}
}
public void list() throws SQLException {
try {
conn = ConnDb.getConnection();
sql = new StringBuilder();
sql.append("select stu_num, stu_name, stu_hp, stu_gender from tb_student");
pstmt = conn.prepareStatement(sql.toString());
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println("학번 : " + rs.getString("stu_num"));
System.out.println("이름 : " + rs.getString("stu_name"));
System.out.println("연락처 : " + rs.getString("stu_hp"));
System.out.println("성별 : " + rs.getString("stu_gender"));
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnDb.close();
pstmt.close();
pstmt = null;
rs.close();
rs = null;
}
}
public void search() throws SQLException {
sc = new Scanner(System.in);
System.out.print("검색할 학생의 학번을 입력하세요 > ");
String stuNum = sc.next();
try {
conn = ConnDb.getConnection();
sql = new StringBuilder();
sql.append("select stu_num, stu_name, stu_hp, stu_gender, stu_rdate from tb_student where stu_num = ?");
pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1, stuNum);
rs = pstmt.executeQuery();
if (rs.next()) {
System.out.println("학번 : " + rs.getString("stu_num"));
System.out.println("이름 : " + rs.getString("stu_name"));
System.out.println("연락처 : " + rs.getString("stu_hp"));
System.out.println("성별 : " + rs.getString("stu_gender"));
System.out.println("등록일 : " + rs.getString("stu_rdate"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void update() throws SQLException {
sc = new Scanner(System.in);
System.out.print("수정할 학생의 학번을 입력하세요 > ");
String stuNum = sc.next();
System.out.print("이름을 입력하세요 > ");
String name = sc.next();
System.out.print("연락처를 입력하세요 > ");
String hp = sc.next();
System.out.print("성별을 입력하세요 > ");
String gender = sc.next();
try {
conn = ConnDb.getConnection();
sql = new StringBuilder();
sql.append("update tb_student set stu_name = ?, stu_hp = ?, stu_gender = ? where stu_num=?");
pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1, name);
pstmt.setString(2, hp);
pstmt.setString(3, gender);
pstmt.setString(4, stuNum);
int result = pstmt.executeUpdate();
if (result >= 1) System.out.println("학생정보 수정 성공");
else System.out.println("학생정보 수정 실패");
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnDb.close();
pstmt.close();
pstmt = null;
}
}
public void delete() throws SQLException {
sc = new Scanner(System.in);
System.out.print("삭제할 학생의 학번을 입력하세요 > ");
String stuNum = sc.next();
try {
conn = ConnDb.getConnection();
sql = new StringBuilder();
sql.append("delete from tb_student where stu_num = ?");
pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1, stuNum);
int result = pstmt.executeUpdate();
if (result >= 1) System.out.println("학생 정보 삭제 성공");
else System.out.println("학생 정보 삭제 실패");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
ConnDb.close();
pstmt.close();
pstmt = null;
}
}
}
실행 클래스
import java.sql.SQLException;
import java.util.Scanner;
public class homework {
public static void main(String[] args) throws SQLException {
Scanner sc = new Scanner(System.in);
stuDTO stuDTO;
stuDAO stuDAO = new stuDAO();
while (true) {
System.out.println("********** 메뉴 **********");
System.out.println("1. 학생 등록 2. 학생 리스트 3. 학생 검색 4. 학생 수정 5. 학생 삭제 6. 프로그램 종료");
System.out.print("메뉴를 선택하세요 : ");
int input = sc.nextInt();
if (input == 6) {
System.out.println("프로그램을 종료합니다.");
break;
}
switch (input) {
case 1:
stuDAO.insert();
break;
case 2:
stuDAO.list();
break;
case 3:
stuDAO.search();
break;
case 4:
stuDAO.update();
break;
case 5:
stuDAO.delete();
break;
}
}
}
}
실행 결과
학생 정보 등록
학생 정보 검색
학생 정보 수정
학생 정보 삭제
728x90