From 97490a61801f45903623b05131957a086bcf128c Mon Sep 17 00:00:00 2001 From: swdean07 Date: Thu, 31 Oct 2024 16:22:43 +0900 Subject: [PATCH 1/4] =?UTF-8?q?1031=20=ED=99=8D=EC=83=81=EC=9A=B0=20?= =?UTF-8?q?=EB=AF=B8=EB=8B=88=EC=8B=A4=EC=8A=B5=20=EC=99=84=EB=A3=8C?= =?UTF-8?q?=ED=95=98=EC=98=80=EC=8A=B5=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ex_241023_cha15/homework/Hsw1009DAO.java | 83 ++++++++++ .../ex_241023_cha15/homework/Hsw1009DTO.java | 58 +++++++ .../homework/Hsw1009ProTest.java | 148 ++++++++++++++++++ 3 files changed, 289 insertions(+) create mode 100644 Java_Practice2/src/ex_241023_cha15/homework/Hsw1009DAO.java create mode 100644 Java_Practice2/src/ex_241023_cha15/homework/Hsw1009DTO.java create mode 100644 Java_Practice2/src/ex_241023_cha15/homework/Hsw1009ProTest.java diff --git a/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009DAO.java b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009DAO.java new file mode 100644 index 00000000..069cb3d0 --- /dev/null +++ b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009DAO.java @@ -0,0 +1,83 @@ +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 Hsw1009DAO { + String driver = "oracle.jdbc.driver.OracleDriver"; + String url = "jdbc:oracle:thin:@localhost:1521:xe"; + String userid = "scott"; + String passwd = "tiger"; + private Object connection; + + public Hsw1009DAO() { + try { + Class.forName(driver); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } + + public boolean insertMember(Hsw1009DTO member) { + String insertQuery = "INSERT INTO member501(name, email, password) VALUES (?, ?, ?)"; + try (Connection connection = DriverManager.getConnection(url, userid, passwd); + PreparedStatement preparedStatement = connection.prepareStatement(insertQuery)) { + + connection.setAutoCommit(false); + + preparedStatement.setString(1, member.getName()); + preparedStatement.setString(2, member.getEmail()); + preparedStatement.setString(3, member.getPassword()); + + int rowsAffected = preparedStatement.executeUpdate(); + connection.commit(); + + return rowsAffected > 0; + } catch (SQLException e) { + e.printStackTrace(); + // 롤백을 시도하려면 커넥션을 먼저 열어야 하므로 + try { + if (connection != null) { + ((Connection) connection).rollback(); + } + } catch (SQLException rollbackEx) { + rollbackEx.printStackTrace(); + } + return false; + } + } + + public List fetchAllMembers() { + List members = new ArrayList<>(); + String query = "SELECT name, email, password FROM members"; + + try (Connection connection = DriverManager.getConnection(url, userid, passwd); + PreparedStatement preparedStatement = connection.prepareStatement(query); + ResultSet resultSet = preparedStatement.executeQuery()) { + + while (resultSet.next()) { + Hsw1009DTO member = new Hsw1009DTO( + resultSet.getString("name"), + resultSet.getString("email"), + resultSet.getString("password") + ); + members.add(member); + } + } catch (SQLException e) { + e.printStackTrace(); + } + + return members; + } + + public boolean isEmailExists(String email) { + // TODO Auto-generated method stub + return false; + } +} + diff --git a/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009DTO.java b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009DTO.java new file mode 100644 index 00000000..d5438c95 --- /dev/null +++ b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009DTO.java @@ -0,0 +1,58 @@ +package ex_241023_cha15.homework; + +public class Hsw1009DTO { + // 모델 정의, 데이터를 + // 비지니스 모델 (실제 디비)-> 프레젠테이션 모델(출력 형식) + String deptno; // dept 테이블의 칼럼을 저장하기 위한 인스턴스 변수를 정의. + String dname; + String loc; + private String name; + private String email; + private String password; + + public Hsw1009DTO() { + + } + + public Hsw1009DTO(String name, String dname, String loc) { + super(); + this.deptno = name; + this.dname = dname; + this.loc = loc; + } + public String getDeptno() { + return deptno; + } + public void setDeptno(String deptno) { + this.deptno = deptno; + } + public String getDname() { + return dname; + } + public void setDname(String dname) { + this.dname = dname; + } + public String getLoc() { + return loc; + } + public void setLoc(String loc) { + this.loc = loc; + } + + public void setDeptno(int int1) { + return; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + + public String getPassword() { + return password; + } +} + diff --git a/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009ProTest.java b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009ProTest.java new file mode 100644 index 00000000..105d404e --- /dev/null +++ b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009ProTest.java @@ -0,0 +1,148 @@ +package ex_241023_cha15.homework; + +import javax.swing.*; +import javax.swing.table.DefaultTableModel; +import java.awt.*; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +public class Hsw1009ProTest extends JFrame { + private JTextField nameField; + private JTextField emailField; + private JPasswordField passwordField; + private JTable memberTable; + private DefaultTableModel tableModel; + private Hsw1009DAO memberDAO; + private String url; + private String userid; + private String passwd; + + public Hsw1009ProTest() { + setTitle("회원 관리 프로그램 V 1.0.0"); + setSize(800, 300); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLayout(new BorderLayout()); + + memberDAO = new Hsw1009DAO(); + + JPanel inputPanel = new JPanel(new FlowLayout()); + inputPanel.add(new JLabel("Name: ")); + nameField = new JTextField(10); + inputPanel.add(nameField); + + inputPanel.add(new JLabel("E-mail: ")); + emailField = new JTextField(10); + inputPanel.add(emailField); + + inputPanel.add(new JLabel("Password: ")); + passwordField = new JPasswordField(10); + inputPanel.add(passwordField); + + JButton addButton = new JButton("Add"); + JButton fetchButton = new JButton("Search"); + inputPanel.add(addButton); + inputPanel.add(fetchButton); + + add(inputPanel, BorderLayout.NORTH); + + String[] columnNames = { "이름", "이메일", "패스워드" }; + tableModel = new DefaultTableModel(columnNames, 0); + memberTable = new JTable(tableModel); + JScrollPane scrollPane = new JScrollPane(memberTable); + add(scrollPane, BorderLayout.CENTER); + + addButton.addActionListener(e -> addMember()); + fetchButton.addActionListener(e -> fetchMembers()); + + setVisible(true); + } + + private void addMember() { + String name = nameField.getText(); + String email = emailField.getText(); + String password = new String(passwordField.getPassword()); + + if (!name.isEmpty() && !email.isEmpty() && !password.isEmpty()) { + try { + String hashedPassword = PasswordUtil.hashPassword(password); + Hsw1009DTO member = new Hsw1009DTO(name, email, hashedPassword); + boolean isSaved = memberDAO.insertMember(member); + + if (isSaved) { + JOptionPane.showMessageDialog(null, "회원 정보가 성공적으로 저장되었습니다.", "저장 성공", JOptionPane.INFORMATION_MESSAGE); + tableModel.addRow(new String[] { name, email, hashedPassword }); + nameField.setText(""); + emailField.setText(""); + passwordField.setText(""); + } else { + JOptionPane.showMessageDialog(null, "회원 정보 저장에 실패했습니다.", "저장 실패", JOptionPane.ERROR_MESSAGE); + } + } catch (Exception e) { + JOptionPane.showMessageDialog(null, "오류 발생: " + e.getMessage(), "오류", JOptionPane.ERROR_MESSAGE); + e.printStackTrace(); + } + } else { + JOptionPane.showMessageDialog(null, "이름, 이메일, 패스워드를 모두 입력해주세요.", "입력 오류", JOptionPane.ERROR_MESSAGE); + } + + if (memberDAO.isEmailExists(email)) { + JOptionPane.showMessageDialog(null, "이미 존재하는 이메일입니다.", "입력 오류", JOptionPane.ERROR_MESSAGE); + return; + } + + } + + private void fetchMembers() { + List members = memberDAO.fetchAllMembers(); + tableModel.setRowCount(0); + + if (members == null || members.isEmpty()) { + JOptionPane.showMessageDialog(null, "조회된 회원이 없습니다.", "조회 실패", JOptionPane.INFORMATION_MESSAGE); + } else { + for (Hsw1009DTO member : members) { + tableModel.addRow(new String[] { member.getName(), member.getEmail(), "*****" }); + } + JOptionPane.showMessageDialog(null, "회원 목록이 성공적으로 불러왔습니다.", "조회 성공", JOptionPane.INFORMATION_MESSAGE); + } + } + + public boolean validateUser(String email, String password) { + String hashedInputPassword = PasswordUtil.hashPassword(password); + List members = memberDAO.fetchAllMembers(); + + for (Hsw1009DTO member : members) { + if (member.getEmail().equals(email) && member.getPassword().equals(hashedInputPassword)) { + return true; + } + } + return false; + } + + public boolean isEmailExists(String email) { + String query = "SELECT COUNT(*) FROM members WHERE email = ?"; + try (Connection connection = DriverManager.getConnection(url, userid, passwd); + PreparedStatement preparedStatement = connection.prepareStatement(query)) { + preparedStatement.setString(1, email); + ResultSet resultSet = preparedStatement.executeQuery(); + if (resultSet.next()) { + return resultSet.getInt(1) > 0; + } + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } + + public static void main(String[] args) { + new Hsw1009ProTest(); + } +} + + + + + From 60024f1fa34f32d10aef5a12c5048d678645f62c Mon Sep 17 00:00:00 2001 From: swdean07 Date: Thu, 31 Oct 2024 16:31:40 +0900 Subject: [PATCH 2/4] =?UTF-8?q?1031=20=ED=99=8D=EC=83=81=EC=9A=B0=20?= =?UTF-8?q?=EB=AF=B8=EB=8B=88=EC=8B=A4=EC=8A=B5=20=EC=99=84=EB=A3=8C?= =?UTF-8?q?=ED=95=98=EC=98=80=EC=8A=B5=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ex_241023_cha15/homework/Hsw1009Test.java | 148 ++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 Java_Practice2/src/ex_241023_cha15/homework/Hsw1009Test.java diff --git a/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009Test.java b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009Test.java new file mode 100644 index 00000000..105d404e --- /dev/null +++ b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009Test.java @@ -0,0 +1,148 @@ +package ex_241023_cha15.homework; + +import javax.swing.*; +import javax.swing.table.DefaultTableModel; +import java.awt.*; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +public class Hsw1009ProTest extends JFrame { + private JTextField nameField; + private JTextField emailField; + private JPasswordField passwordField; + private JTable memberTable; + private DefaultTableModel tableModel; + private Hsw1009DAO memberDAO; + private String url; + private String userid; + private String passwd; + + public Hsw1009ProTest() { + setTitle("회원 관리 프로그램 V 1.0.0"); + setSize(800, 300); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLayout(new BorderLayout()); + + memberDAO = new Hsw1009DAO(); + + JPanel inputPanel = new JPanel(new FlowLayout()); + inputPanel.add(new JLabel("Name: ")); + nameField = new JTextField(10); + inputPanel.add(nameField); + + inputPanel.add(new JLabel("E-mail: ")); + emailField = new JTextField(10); + inputPanel.add(emailField); + + inputPanel.add(new JLabel("Password: ")); + passwordField = new JPasswordField(10); + inputPanel.add(passwordField); + + JButton addButton = new JButton("Add"); + JButton fetchButton = new JButton("Search"); + inputPanel.add(addButton); + inputPanel.add(fetchButton); + + add(inputPanel, BorderLayout.NORTH); + + String[] columnNames = { "이름", "이메일", "패스워드" }; + tableModel = new DefaultTableModel(columnNames, 0); + memberTable = new JTable(tableModel); + JScrollPane scrollPane = new JScrollPane(memberTable); + add(scrollPane, BorderLayout.CENTER); + + addButton.addActionListener(e -> addMember()); + fetchButton.addActionListener(e -> fetchMembers()); + + setVisible(true); + } + + private void addMember() { + String name = nameField.getText(); + String email = emailField.getText(); + String password = new String(passwordField.getPassword()); + + if (!name.isEmpty() && !email.isEmpty() && !password.isEmpty()) { + try { + String hashedPassword = PasswordUtil.hashPassword(password); + Hsw1009DTO member = new Hsw1009DTO(name, email, hashedPassword); + boolean isSaved = memberDAO.insertMember(member); + + if (isSaved) { + JOptionPane.showMessageDialog(null, "회원 정보가 성공적으로 저장되었습니다.", "저장 성공", JOptionPane.INFORMATION_MESSAGE); + tableModel.addRow(new String[] { name, email, hashedPassword }); + nameField.setText(""); + emailField.setText(""); + passwordField.setText(""); + } else { + JOptionPane.showMessageDialog(null, "회원 정보 저장에 실패했습니다.", "저장 실패", JOptionPane.ERROR_MESSAGE); + } + } catch (Exception e) { + JOptionPane.showMessageDialog(null, "오류 발생: " + e.getMessage(), "오류", JOptionPane.ERROR_MESSAGE); + e.printStackTrace(); + } + } else { + JOptionPane.showMessageDialog(null, "이름, 이메일, 패스워드를 모두 입력해주세요.", "입력 오류", JOptionPane.ERROR_MESSAGE); + } + + if (memberDAO.isEmailExists(email)) { + JOptionPane.showMessageDialog(null, "이미 존재하는 이메일입니다.", "입력 오류", JOptionPane.ERROR_MESSAGE); + return; + } + + } + + private void fetchMembers() { + List members = memberDAO.fetchAllMembers(); + tableModel.setRowCount(0); + + if (members == null || members.isEmpty()) { + JOptionPane.showMessageDialog(null, "조회된 회원이 없습니다.", "조회 실패", JOptionPane.INFORMATION_MESSAGE); + } else { + for (Hsw1009DTO member : members) { + tableModel.addRow(new String[] { member.getName(), member.getEmail(), "*****" }); + } + JOptionPane.showMessageDialog(null, "회원 목록이 성공적으로 불러왔습니다.", "조회 성공", JOptionPane.INFORMATION_MESSAGE); + } + } + + public boolean validateUser(String email, String password) { + String hashedInputPassword = PasswordUtil.hashPassword(password); + List members = memberDAO.fetchAllMembers(); + + for (Hsw1009DTO member : members) { + if (member.getEmail().equals(email) && member.getPassword().equals(hashedInputPassword)) { + return true; + } + } + return false; + } + + public boolean isEmailExists(String email) { + String query = "SELECT COUNT(*) FROM members WHERE email = ?"; + try (Connection connection = DriverManager.getConnection(url, userid, passwd); + PreparedStatement preparedStatement = connection.prepareStatement(query)) { + preparedStatement.setString(1, email); + ResultSet resultSet = preparedStatement.executeQuery(); + if (resultSet.next()) { + return resultSet.getInt(1) > 0; + } + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } + + public static void main(String[] args) { + new Hsw1009ProTest(); + } +} + + + + + From 3c01d43549bbd9230029cb075357fb4d8dae05d8 Mon Sep 17 00:00:00 2001 From: swdean07 Date: Thu, 31 Oct 2024 16:32:15 +0900 Subject: [PATCH 3/4] =?UTF-8?q?1031=20=ED=99=8D=EC=83=81=EC=9A=B0=20?= =?UTF-8?q?=EB=AF=B8=EB=8B=88=EC=8B=A4=EC=8A=B5=20=EC=99=84=EB=A3=8C?= =?UTF-8?q?=ED=95=98=EC=98=80=EC=8A=B5=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/ex_241023_cha15/homework/Hsw1009Test.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009Test.java b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009Test.java index 105d404e..408f3e1b 100644 --- a/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009Test.java +++ b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009Test.java @@ -10,7 +10,7 @@ import java.sql.SQLException; import java.util.List; -public class Hsw1009ProTest extends JFrame { +public class Hsw1009Test extends JFrame { private JTextField nameField; private JTextField emailField; private JPasswordField passwordField; @@ -21,7 +21,7 @@ public class Hsw1009ProTest extends JFrame { private String userid; private String passwd; - public Hsw1009ProTest() { + public Hsw1009Test() { setTitle("회원 관리 프로그램 V 1.0.0"); setSize(800, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); @@ -138,7 +138,7 @@ public boolean isEmailExists(String email) { } public static void main(String[] args) { - new Hsw1009ProTest(); + new Hsw1009Test(); } } From be93126c56d02d10d0436653ea3eb69c3e3db32a Mon Sep 17 00:00:00 2001 From: swdean07 Date: Thu, 31 Oct 2024 16:34:27 +0900 Subject: [PATCH 4/4] =?UTF-8?q?1031=20=ED=99=8D=EC=83=81=EC=9A=B0=20?= =?UTF-8?q?=EB=AF=B8=EB=8B=88=EC=8B=A4=EC=8A=B5=20=EA=B3=BC=EC=A0=9C=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C=ED=95=98=EC=98=80=EC=8A=B5=EB=8B=88=EB=8B=A4?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../homework/Hsw1009TestMain.java | 148 ++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 Java_Practice2/src/ex_241023_cha15/homework/Hsw1009TestMain.java diff --git a/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009TestMain.java b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009TestMain.java new file mode 100644 index 00000000..408f3e1b --- /dev/null +++ b/Java_Practice2/src/ex_241023_cha15/homework/Hsw1009TestMain.java @@ -0,0 +1,148 @@ +package ex_241023_cha15.homework; + +import javax.swing.*; +import javax.swing.table.DefaultTableModel; +import java.awt.*; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +public class Hsw1009Test extends JFrame { + private JTextField nameField; + private JTextField emailField; + private JPasswordField passwordField; + private JTable memberTable; + private DefaultTableModel tableModel; + private Hsw1009DAO memberDAO; + private String url; + private String userid; + private String passwd; + + public Hsw1009Test() { + setTitle("회원 관리 프로그램 V 1.0.0"); + setSize(800, 300); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLayout(new BorderLayout()); + + memberDAO = new Hsw1009DAO(); + + JPanel inputPanel = new JPanel(new FlowLayout()); + inputPanel.add(new JLabel("Name: ")); + nameField = new JTextField(10); + inputPanel.add(nameField); + + inputPanel.add(new JLabel("E-mail: ")); + emailField = new JTextField(10); + inputPanel.add(emailField); + + inputPanel.add(new JLabel("Password: ")); + passwordField = new JPasswordField(10); + inputPanel.add(passwordField); + + JButton addButton = new JButton("Add"); + JButton fetchButton = new JButton("Search"); + inputPanel.add(addButton); + inputPanel.add(fetchButton); + + add(inputPanel, BorderLayout.NORTH); + + String[] columnNames = { "이름", "이메일", "패스워드" }; + tableModel = new DefaultTableModel(columnNames, 0); + memberTable = new JTable(tableModel); + JScrollPane scrollPane = new JScrollPane(memberTable); + add(scrollPane, BorderLayout.CENTER); + + addButton.addActionListener(e -> addMember()); + fetchButton.addActionListener(e -> fetchMembers()); + + setVisible(true); + } + + private void addMember() { + String name = nameField.getText(); + String email = emailField.getText(); + String password = new String(passwordField.getPassword()); + + if (!name.isEmpty() && !email.isEmpty() && !password.isEmpty()) { + try { + String hashedPassword = PasswordUtil.hashPassword(password); + Hsw1009DTO member = new Hsw1009DTO(name, email, hashedPassword); + boolean isSaved = memberDAO.insertMember(member); + + if (isSaved) { + JOptionPane.showMessageDialog(null, "회원 정보가 성공적으로 저장되었습니다.", "저장 성공", JOptionPane.INFORMATION_MESSAGE); + tableModel.addRow(new String[] { name, email, hashedPassword }); + nameField.setText(""); + emailField.setText(""); + passwordField.setText(""); + } else { + JOptionPane.showMessageDialog(null, "회원 정보 저장에 실패했습니다.", "저장 실패", JOptionPane.ERROR_MESSAGE); + } + } catch (Exception e) { + JOptionPane.showMessageDialog(null, "오류 발생: " + e.getMessage(), "오류", JOptionPane.ERROR_MESSAGE); + e.printStackTrace(); + } + } else { + JOptionPane.showMessageDialog(null, "이름, 이메일, 패스워드를 모두 입력해주세요.", "입력 오류", JOptionPane.ERROR_MESSAGE); + } + + if (memberDAO.isEmailExists(email)) { + JOptionPane.showMessageDialog(null, "이미 존재하는 이메일입니다.", "입력 오류", JOptionPane.ERROR_MESSAGE); + return; + } + + } + + private void fetchMembers() { + List members = memberDAO.fetchAllMembers(); + tableModel.setRowCount(0); + + if (members == null || members.isEmpty()) { + JOptionPane.showMessageDialog(null, "조회된 회원이 없습니다.", "조회 실패", JOptionPane.INFORMATION_MESSAGE); + } else { + for (Hsw1009DTO member : members) { + tableModel.addRow(new String[] { member.getName(), member.getEmail(), "*****" }); + } + JOptionPane.showMessageDialog(null, "회원 목록이 성공적으로 불러왔습니다.", "조회 성공", JOptionPane.INFORMATION_MESSAGE); + } + } + + public boolean validateUser(String email, String password) { + String hashedInputPassword = PasswordUtil.hashPassword(password); + List members = memberDAO.fetchAllMembers(); + + for (Hsw1009DTO member : members) { + if (member.getEmail().equals(email) && member.getPassword().equals(hashedInputPassword)) { + return true; + } + } + return false; + } + + public boolean isEmailExists(String email) { + String query = "SELECT COUNT(*) FROM members WHERE email = ?"; + try (Connection connection = DriverManager.getConnection(url, userid, passwd); + PreparedStatement preparedStatement = connection.prepareStatement(query)) { + preparedStatement.setString(1, email); + ResultSet resultSet = preparedStatement.executeQuery(); + if (resultSet.next()) { + return resultSet.getInt(1) > 0; + } + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } + + public static void main(String[] args) { + new Hsw1009Test(); + } +} + + + + +