https://www.notion.so/JDBC-MVC-1e4b46ed481e8027aaf1c2baf263f2dc
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class MemberDAO {
// 전체 회원 목록을 조회하는 메서드 (현재는 미구현 상태)
private ArrayList<MemberDTO> selectAll(MemberDTO dto) {
return null; // 나중에 전체 조회 로직을 구현할 수 있음
}
// 특정 회원을 ID와 비밀번호로 조회하는 메서드 (로그인 용도)
public MemberDTO selectOne(MemberDTO dto) {
MemberDTO data = null; // 조회된 회원 정보를 담을 DTO
// JDBC 드라이버 및 DB 접속 정보
final String driverName = "com.mysql.cj.jdbc.Driver";
final String url = "jdbc:mysql://localhost:3306/DB명";
final String userName = "root";
final String password = "0000";
// 로그인 조건에 맞는 회원을 조회하는 SQL
final String sql = "SELECT * FROM MEMBER WHERE MEMBER_ID=? AND MEMBER_PASSWORD=?";
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 1. 드라이버 로드
Class.forName(driverName);
// 2. DB 연결
conn = DriverManager.getConnection(url, userName, password);
// 3. SQL 준비
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, dto.getMember_id()); // 1번 물음표에 아이디 바인딩
pstmt.setString(2, dto.getMember_password()); // 2번 물음표에 비밀번호 바인딩
// 4. SQL 실행 및 결과 처리
ResultSet rs = pstmt.executeQuery();
if (rs.next()) { // 결과가 존재하면 DTO에 데이터 저장
data = new MemberDTO();
data.setMember_id(rs.getString("MEMBER_ID"));
data.setMember_password(rs.getString("MEMBER_PASSWORD"));
data.setMember_name(rs.getString("MEMBER_NAME"));
}
return data; // 결과가 없으면 null 반환
} catch (Exception e) {
// 예외 발생 시에도 data 반환 (null 또는 값)
return data;
} finally {
// 사용한 리소스 정리 (예외 발생 시에도 실행됨)
try {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace(); // 리소스 정리 중 예외 발생 시 출력
}
}
}
}
package view;
import java.util.Scanner;
import model.MemberDTO;
public class View {
private Scanner sc;
public View() {
this.sc=new Scanner(System.in);
}
public void printMenuLogin() {
System.out.println("1.이름변경");
System.out.println("2.회원탈퇴");
System.out.println("3.글작성");
System.out.println("4.글선택");
System.out.println("5.글삭제");
System.out.println("6.로그아웃");
}
public void printMenuLogout() {
System.out.println("7.회원가입");
System.out.println("8.로그인");
System.out.println("9.목록출력");
System.out.println("10.검색");
System.out.println("0.프로그램 종료");
}
public int inputAction() {
return sc.nextInt();
}
public MemberDTO inputMemberDTO() {
System.out.print("아이디>> ");
String mid=sc.next();
System.out.print("비밀번호>> ");
String password=sc.next();
// 빈 MemberDTO에 객체 생성
MemberDTO memberDTO=new MemberDTO();
memberDTO.setMember_id(mid);
memberDTO.setMember_password(password);
memberDTO.setMember_name(name);
return memberDTO;
}
public MemberDTO login() {
System.out.print("아이디>> ");
String mid=sc.next();
System.out.print("비밀번호>> ");
String password=sc.next();
MemberDTO memberDTO=new MemberDTO();
memberDTO.setMember_id(mid);
memberDTO.setMember_password(password);
return memberDTO;
}
public String inputName() {
System.out.print("이름>> ");
String name=sc.next();
return name;
}
}
package controller;
import model.BoardDAO;
import model.MemberDAO;
import model.MemberDTO;
import view.View;
public class Controller {
private BoardDAO boardDAO;
private MemberDAO memberDAO;
private View view;
private MemberDTO user; // 로그인 여부
public Controller() {
this.boardDAO = new BoardDAO();
this.memberDAO = new MemberDAO();
this.view = new View();
this.user = null; // 초기에는 비로그인 상태
}
public void startApp() {
while(true) {
if(user != null) { // 로그인 상태라면
view.printMenuLogin();
}
else {
view.printMenuLogout();
}
int action=view.inputAction();
if(action==1) {
if(user == null) {
continue;
}
String name=view.inputName();
MemberDTO dto=new MemberDTO();
dto.setMember_name(name); // 사용자가 입력한 이름 정보
dto.setMember_id(user.getMember_id()); // 현재 로그인한 아이디 정보
boolean flag=memberDAO.update(dto);
if(flag) {
user=null; // 로그아웃 강제
}
view.printResult(flag);
}
else if(action==2) {
}
else if(action==3) {
}
else if(action==4) {
}
else if(action==5) {
}
else if(action==6) {
if(user == null) {
continue;
}
user=null;
}
else if(action==7) {
if(user != null) {
continue;
}
MemberDTO memberDTO=view.inputMemberDTO();
boolean flag=memberDAO.insert(memberDTO);
view.printResult(flag);
}
else if(action==8) {
if(user != null) {
continue;
}
MemberDTO memberDTO=view.login();
MemberDTO data=memberDAO.selectOne(memberDTO);
if(data==null) {
view.printResult(false);
}
else {
this.user = data;
this.user.setMember_password(null);
view.printResult(true);
}
}
else if(action==9) {
}
else if(action==10) {
}
else {
break;
}
}
}
}
package client;
import controller.Controller;
public class Client {
public static void main(String[] args) {
Controller app = new Controller();
app.startApp();
}
}
0217