3_1. View) 회원 아이디로 검색 -> 회원 아이디 입력받을 메소드 생성 후 Controller로 전달
public String inputMemberId() {
System.out.print("\n회원 아이디 입력 : ");
return sc.nextLine();
3_2 Controller) Dao에 입력받은 값 전달 -> Dao에서 전달받은 객체를 통해 검색결과 성공유무 도출
public void selectByUserId(String userId) {
Member m = new MemberDao().selectByUserId(userId);
if(m == null) { // 검색결과가 없을경우
new MemberMenu().displayNoData(userId +"에 검색결과가 없습니다.");
}else { // 검색결과가 있을 경우
new MemberMenu().displayMember(m);
}
}
3_3. Dao) JDBC과정을 통해 얻은 결과를 객체에 담아 Controller로 전달
public Member selectByUserId(String userId) {
//select문 (한행 조회) => ResultSet객체 => Member객체에 담기
Member m = null;
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
String sql = "SELECT * FROM MEMBER WHERE USER_ID = '" + userId + "'";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
stmt = conn.createStatement();
rset = stmt.executeQuery(sql);
if(rset.next()) {// 조회 됐다면 해당 조회된 한행의 모든 컬럼값들을 뽑아서 Member객체에 담기
m = new Member(rset.getInt("user_no"),
rset.getString("user_id"),
rset.getString("user_pwd"),
rset.getString("user_name"),
rset.getString("gender"),
rset.getInt("age"),
rset.getString("email"),
rset.getString("phone"),
rset.getString("address"),
rset.getString("hobby"),
rset.getDate("enroll_date"));
}else {
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rset.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return m; // 조회결과가 없을 경우 null | 조회결과가 있을 경우 생성된 Member객체
}
3_4 . View) 조회 서비스 요청 결과를 보여주는 응답화면
객체 값이 null 일경우 데이터없음
객체에 값이 있을 경우 출력문을 통해 객체 출력
public void displayNoData(String message) {
System.out.println("\n" + message);
}
public void displayMember(Member m) {
System.out.println("\n조회된 데이터는 다음과 같습니다.\n");
System.out.println(m);
}
4_1. View) 회원 이름으로 검색 하는 메뉴 : 회원 이름입력받을 메소드 생성후 그 값을 Controller에 전달
public String inputMemberName() {
System.out.print("\n회원 이름(키워드) 입력 : ");
return sc.nextLine();
}
4_2. Controller ) 전달받은 키워드를 Dao에 전달후 그 결과를 ArrayList에 반환
public void selectByUserName(String keyword) {
ArrayList<Member> list = new MemberDao().selectByUserName(keyword);
if(list.isEmpty()) { // 조회결과 없을경우
new MemberMenu().displayNoData(keyword +"에 해당하는 검색결과가 없습니다.");
}else { // 검색결과 있을경우
new MemberMenu().displayMemberList(list);
}
}
4_3 Dao ) JDBC과정을 통해 얻은 결과를 객체에 담은후 ArrayList 에 옮겨 담아 Controller에 전달
public ArrayList<Member> selectByUserName(String keyword) {
//select문 (여러행) => ResultSet 객체에결과 받기 = > ArrayList<Member>에 객체 담기
ArrayList<Member> list = new ArrayList<>();// 텅빈 리스트
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
//SELECT * FROM MEMBER WHERE USER_NAME LIKE '%KEYWORD%'
String sql = "SELECT * FROM MEMBER WHERE USER_NAME LIKE '%"+ keyword + "%'";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
stmt = conn.createStatement();
rset = stmt.executeQuery(sql);
while(rset.next()) {
list.add(new Member(rset.getInt("user_no"),
rset.getString("user_id"),
rset.getString("user_pwd"),
rset.getString("user_name"),
rset.getString("gender"),
rset.getInt("age"),
rset.getString("email"),
rset.getString("phone"),
rset.getString("address"),
rset.getString("hobby"),
rset.getDate("enroll_date")));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rset.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list; // 조회결과 없다면 텅빈리스트 | 조회결과 있다면 결과가 담긴 리스트
}
4_4. View) list 비어있을 경우 displayNoData()메소드 호출 / 조회 결과 있을 경우 displayMemberList()메소드 호출
public void displayNoData(String message) {
System.out.println("\n" + message);
}
public void displayMemberList(ArrayList<Member> list) {
System.out.println("\n조회된 데이터는 다음과 같습니다.");
for(int i =0; i<list.size();i++) {
System.out.println(list.get(i));
}
5_1. View ) 회원 정보 변경 메뉴 : 회원아이디와 수정하고자할 정보들을 입력받은후 그 값을 Controller에 전달
public void updateMember() {
System.out.println("\n=== 회원 정보 변경 ===");
String userId = inputMemberId();
System.out.print("변경할 비밀번호: ");
String userPwd = sc.nextLine();
System.out.print("변경할 이메일 : ");
String email = sc.nextLine();
System.out.print("변경할 전화번호 : ");
String phone = sc.nextLine();
System.out.print("변경할 주소 : ");
String address = sc.nextLine();
mc.updateMember(userId,userPwd,email,phone,address);
}
5_2. Controller) 전달받은 값들을 객체에 옮겨담아 Dao로 전달 후 결과값을 돌려받음
public void updateMember(String userId, String userPwd, String email,
String phone, String address) {
Member m = new Member();
m.setUserId(userId);
m.setUserPwd(userPwd);
m.setEmail(email);
m.setPhone(phone);
m.setAddress(address);
int result = new MemberDao().updateMember(m);
if(result >0) {
new MemberMenu().displaySuccess("성공적으로 정보변경되었습니다.");
}else {
new MemberMenu().displayFail("회원 정보 변경 실패");
}
}
5_3. Dao) JDBC과정을 통해 처리된 행수의 결과값을 Controller로 전달
public int updateMember(Member m) {
//update문 ->처리된 행수(int) 결과값 -> 트랜잭션 처리
int result = 0;
Connection conn = null;
Statement stmt = null;
//실행할 sql문 (완성형태)
String sql = "UPDATE MEMBER "
+ "SET USER_PWD = '"+ m.getUserPwd() + "', "
+ "EMAIL = '"+ m.getEmail() + "', "
+ "PHONE = '"+ m.getPhone() + "', "
+ "ADDRESS = '" + m.getAddress() + "' "
+ "WHERE USER_ID = '" + m.getUserId() +"'";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
stmt = conn.createStatement();
result = stmt.executeUpdate(sql);
if(result>0) {
conn.commit();
}else {
conn.rollback();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
5_4 View) 결과값이 0 (조회된 결과가 없을시 ) Fail / 결과값이 1이상일때 (조회된 결과가 있을때) Success 메소드 호출
6_1. View) 회원 탈퇴 메뉴 : 탈퇴하고자하는 회원 아이디 입력 받는 메소드 호출 후 그 값을 Controller에 전달
6_2. Controller ) 전달받은 회원아이디를 Dao에 전달한 후 결과값(int)로 돌려받음
public void deleteMember(String userId) {
int result = new MemberDao().deleteMember(userId);
if(result>0) {
new MemberMenu().displaySuccess("성공적으로 회원 탈퇴되었습니다");
}else {
new MemberMenu().displayFail("회원 탈퇴 실패");
}
}
6_3. Dao) JDBC과정을 통해 처리된 행수를 (int)값으로 돌려받고, 그값을 Controller에 전달
public int deleteMember(String userId) {
//delet문 => 처리된 행수 (결과 int) => 트랜잭션 처리
int result = 0;
Connection conn= null;
Statement stmt = null;
String sql = "DELETE FROM MEMBER WHERE USER_ID = '"+ userId +"'";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
stmt = conn.createStatement();
result = stmt.executeUpdate(sql);
if(result>0) {
conn.commit();
}else {
conn.rollback();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
6_4. View) 결과값이 0 (조회된 결과가 없을시 ) Fail / 결과값이 1이상일때 (조회된 결과가 있을때) Success 메소드 호출
'JDBC' 카테고리의 다른 글
JDBC 04 _ mvc 패턴 이용한 JDBC _ Service, JDBC Template (0) | 2022.12.05 |
---|---|
JDBC 03 _ mvc 패턴 이용한 JDBC_Prepared Statement (0) | 2022.12.05 |
JDBC 02 _ mvc 패턴 이용한 JDBC Statement(1) (0) | 2022.12.01 |
JDBC 01 _ delete문 (0) | 2022.11.30 |
JDBC 01 _ update문 (0) | 2022.11.30 |