Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 127 additions & 0 deletions Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_DAO.java
Original file line number Diff line number Diff line change
@@ -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<Kjh0313_DTO> selectMember() {
List<Kjh0313_DTO> list = new ArrayList<Kjh0313_DTO>();
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;
}
}
41 changes: 41 additions & 0 deletions Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_DTO.java
Original file line number Diff line number Diff line change
@@ -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;
}

}
103 changes: 103 additions & 0 deletions Java_Practice2/src/ex_241023_cha15/homework/Kjh0313_Db.java
Original file line number Diff line number Diff line change
@@ -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<Kjh0313_DTO> members;

private Kjh0313_DAO memberDAO = new Kjh0313_DAO();

public Kjh0313_Db() {
setTitle("회원 관리 프로그램");
setSize(800, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

members = new ArrayList<Kjh0313_DTO>();

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

}