diff --git a/Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_DAO.java b/Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_DAO.java new file mode 100644 index 0000000..8c727e8 --- /dev/null +++ b/Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_DAO.java @@ -0,0 +1,127 @@ +package ex_241023_cha15.homework; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class Kjh0313_DAO { + String driver = "oracle.jdbc.driver.OracleDriver"; + String url = "jdbc:oracle:thin:@localhost:1521:xe"; + String userid = "scott"; + String passwd = "tiger"; + + public Kjh0313_DAO() { + try { + Class.forName(driver); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } + + // 조회 + public List selectMember() { + List list = new ArrayList(); + Connection con = null; + PreparedStatement pstmt = null; + ResultSet rs = null; + + try { + con = DriverManager.getConnection(url, userid, passwd); + String query = "SELECT name,email,password FROM MEMBER501 ORDER BY id ASC"; + pstmt = con.prepareStatement(query); + rs = pstmt.executeQuery(); + + while (rs.next()) { + Kjh0313_DTO dto = new Kjh0313_DTO(); + dto.setName(rs.getString("name")); + dto.setEmail(rs.getString("email")); + dto.setPassword(rs.getString("password")); + list.add(dto); + } + + } catch (Exception 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(); + } + } + return list; + } + + // 저장 + public int insertMember(String name, String email, String password) { + Connection con = null; + PreparedStatement pstmt = null; + int result = 0; + + try { + con = DriverManager.getConnection(url, userid, passwd); + String sql = "INSERT INTO MEMBER501(id,name,email,password) VALUES(?,?,?,?)"; + pstmt = con.prepareStatement(sql); + + System.out.println(name); + + pstmt.setInt(1, getMaxId()); + pstmt.setString(2, name); + pstmt.setString(3, email); + pstmt.setString(4, password); + result = pstmt.executeUpdate(); + + System.out.println(result + "개의 레코드가 저장"); + + } catch (Exception e) { + e.printStackTrace(); + + } finally { + try { + if (pstmt != null) pstmt.close(); + if (con != null) con.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return result; + } + + // id 생성 + private int getMaxId() { + Connection con = null; + PreparedStatement pstmt = null; + ResultSet rs = null; + int maxId = 1; + + try { + con = DriverManager.getConnection(url, userid, passwd); + String query = "SELECT * FROM (SELECT id FROM MEMBER501 ORDER BY id DESC) WHERE ROWNUM = 1"; + pstmt = con.prepareStatement(query); + rs = pstmt.executeQuery(); + + if(rs.next()) { + maxId = rs.getInt("id") + 1; + } + + } catch (Exception 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(); + } + } + return maxId; + } +} \ No newline at end of file diff --git a/Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_DTO.java b/Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_DTO.java new file mode 100644 index 0000000..3e76804 --- /dev/null +++ b/Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_DTO.java @@ -0,0 +1,41 @@ +package ex_241023_cha15.homework; + +public class Kjh0313_DTO { + private Integer id; + private String name; + private String email; + private String password; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + +} \ No newline at end of file diff --git a/Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_Db.java b/Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_Db.java new file mode 100644 index 0000000..e3d11fa --- /dev/null +++ b/Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_Db.java @@ -0,0 +1,103 @@ +package ex_241023_cha15.homework; + +import java.awt.BorderLayout; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.*; + +public class Kjh0313_Db extends JFrame { + private JTextField nameField; + private JTextField emailField; + private JTextField pwField; + private JPanel showPanel; + + private List members; + + private Kjh0313_DAO memberDAO = new Kjh0313_DAO(); + + public Kjh0313_Db() { + setTitle("회원 관리 프로그램"); + setSize(800, 300); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + members = new ArrayList(); + + JPanel inputPanel = new JPanel(); + setLayout(new BorderLayout()); + + // 입력창 + inputPanel.add(new JLabel("이름: ")); + nameField = new JTextField(10); + inputPanel.add(nameField); + inputPanel.add(new JLabel("이메일: ")); + emailField = new JTextField(20); + inputPanel.add(emailField); + inputPanel.add(new JLabel("비밀번호: ")); + pwField = new JTextField(10); + inputPanel.add(pwField); + + // 버튼 + JButton addButton = new JButton("가입"); + inputPanel.add(addButton); + JButton selButton = new JButton("조회"); + inputPanel.add(selButton); + + showPanel = new JPanel(); + showPanel.setLayout(new BoxLayout(showPanel, BoxLayout.Y_AXIS)); + + add(inputPanel,BorderLayout.NORTH); + add(showPanel,BorderLayout.CENTER); + + addButton.addActionListener(e -> addMember()); + selButton.addActionListener(e -> selMember()); + + setVisible(true); + } + + // 가입 + public void addMember() { + String name = nameField.getText(); + String email = emailField.getText(); + String password = pwField.getText(); + + if(name.isEmpty() || email.isEmpty() || password.isEmpty()) { + JOptionPane.showMessageDialog(null, "이름, 이메일, 비밀번호를 모두 입력해주세요.", + "입력 오류", JOptionPane.ERROR_MESSAGE); + return; + } + + if(memberDAO.insertMember(name, email, password) > 0) { + JOptionPane.showMessageDialog(null, "회원가입이 완료되었습니다.", + "가입 성공", JOptionPane.INFORMATION_MESSAGE); + } else { + JOptionPane.showMessageDialog(null, "회원가입에 실패했습니다.", + "저장 오류", JOptionPane.ERROR_MESSAGE); + } + + showPanel.removeAll(); // 회원목록 초기화 + showPanel.revalidate(); + showPanel.repaint(); + } + + // 조회 + public void selMember() { + showPanel.removeAll(); // 회원목록 초기화 + members = memberDAO.selectMember(); + + for (Kjh0313_DTO member : members) { + JLabel memberLabel = new JLabel("이름 : " + member.getName() + ", 이메일 : " + member.getEmail()); + showPanel.add(memberLabel); + } + + showPanel.revalidate(); + showPanel.repaint(); + } + + + + public static void main(String[] args) { + new Kjh0313_Db(); + } + +} \ No newline at end of file