SMALL
안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
전체 회원 조회
0 ~ n건이 조회될 때, 실제 조회 결과가 0건이면 빈 ArrayList객체를 반환
MemberMenu
public class MemberMenu {
private Scanner sc = new Scanner(System.in);
private MemberController memberController = new MemberController();
private SimpleDateFormat dateFormatRegDate = new SimpleDateFormat("yyyyMMdd");
public void mainMenu() {
String menu = "\n******** 회원 정보 관리 ********\n"
+ "1. 전체 조회\n"
+ "2. 아이디 조회\n"
+ "3. 이름 검색 \n"
+ "4. 회원가입\n"
+ "5. 회원 정보 변경\n"
+ "6. 회원 탈퇴\n"
+ "0. 프로그램 종료\n"
+ "*****************************\n"
+ "선택 : ";
while(true) {
System.out.print(menu);
String choice = sc.next();
Member member = null;
int result = 0;
String id = null;
List<Member> members = null;
switch(choice) {
case "1" :
members = memberController.findAll();
printMembers(members);
break;
case "2" : break;
case "3" : break;
case "4" :
member = inputMember();
result = memberController.inputMember(member);
System.out.println(result > 0 ? "> 회원가입 성공!" : "> 회원가입 실패!");
break;
case "5" :
member = updateMember();
result = memberController.updateMember(member);
System.out.println(result > 0 ? "> " + result + "행 수정 완료!" : "> 회원 정보 수정 실패!");
break;
case "6" :
id = deleteMember();
result = memberController.deleteMember(id);
System.out.println(result > 0 ? "> " + result + "행 삭제 완료!" : "> 회원 탈퇴 실패!");
break;
case "0" : return;
default : System.out.println("잘못 입력하셨습니다.");
}
}
}
/**
* 1. 전체 회원 조회
* 0 ~ n건이 조회될 때, 실제 조회 결과가 0건이면 빈 ArrayList객체를 반환
*/
private void printMembers(List<Member> members) {
if(members == null || members.isEmpty()) {
System.out.println("> 조회된 결과가 없습니다.");
} else {
System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",
"id", "name", "gender", "birthday", "email", "point", "regDate");
System.out.println("-------------------------------------------------------------------------");
for(Member member : members) {
System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",
member.getId(),
member.getName(),
member.getGender(),
member.getBirthday(),
member.getEmail(),
member.getPoint(),
dateFormatRegDate.format(member.getRegDate())
);
}
System.out.println("-------------------------------------------------------------------------");
}
}
}
MemberController
public class MemberController {
private MemberDao memberDao = new MemberDao();
// 1. 전체 회원 조회
public List<Member> findAll() {
return memberDao.findAll();
}
}
MemberDao
public class MemberDao {
final String driverClass = "oracle.jdbc.OracleDriver";
final String url = "jdbc:oracle:thin:@localhost:1521:xe"; //db접속프로토콜@ip:포트:db명(sid)
final String user = "student";
final String password = "student";
// 1. 전체 회원 조회
public List<Member> findAll() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rset = null;
String sql = "select * from member order by reg_date desc";
List<Member> members = new ArrayList<>();
try {
Class.forName(driverClass);
conn = DriverManager.getConnection(url, user, password);
pstmt = conn.prepareStatement(sql);
rset = pstmt.executeQuery();
while(rset.next()) {
Member member = new Member();
member.setId(rset.getString("id"));
member.setName(rset.getString("name"));
member.setGender(rset.getString("gender"));
member.setBirthday(rset.getDate("birthday"));
member.setEmail(rset.getString("email"));
member.setPoint(rset.getInt("point"));
member.setRegDate(rset.getTimestamp("reg_date"));
members.add(member);
}
} catch(ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
rset.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return members;
}
}
@전체 회원 조회해보기
******** 회원 정보 관리 ********
1. 전체 조회
2. 아이디 조회
3. 이름 검색
4. 회원가입
5. 회원 정보 변경
6. 회원 탈퇴
0. 프로그램 종료
*****************************
선택 : 1
id name gender birthday email point regDate
-------------------------------------------------------------------------
koo 입벌구 M 1989-08-09 koo@naver.com 1000 20220503
qwerty 쿼티 F null qwerty@naver.com 1000 20220502
leess 이순신 M null leess@naver.com 1000 20220502
gogd 고길동 M 1980-02-15 gogd@naver.com 1000 20220502
sinsa 신사임당 F 1995-05-05 sinsa@naver.com 1000 20220502
honggd 홍길동 M 1999-09-09 honggd@naver.com 1000 20220502
-------------------------------------------------------------------------
아이디 조회
MemberMenu
public class MemberMenu {
private Scanner sc = new Scanner(System.in);
private MemberController memberController = new MemberController();
private SimpleDateFormat dateFormatRegDate = new SimpleDateFormat("yyyyMMdd");
public void mainMenu() {
String menu = "\n******** 회원 정보 관리 ********\n"
+ "1. 전체 조회\n"
+ "2. 아이디 조회\n"
+ "3. 이름 검색 \n"
+ "4. 회원가입\n"
+ "5. 회원 정보 변경\n"
+ "6. 회원 탈퇴\n"
+ "0. 프로그램 종료\n"
+ "*****************************\n"
+ "선택 : ";
while(true) {
System.out.print(menu);
String choice = sc.next();
Member member = null;
int result = 0;
String id = null;
List<Member> members = null;
switch(choice) {
case "1" :
members = memberController.findAll();
printMembers(members);
break;
case "2" :
id = inputMemberId();
member = memberController.findById(id);
printMember(member);
break;
case "3" : break;
case "4" :
member = inputMember();
result = memberController.inputMember(member);
System.out.println(result > 0 ? "> 회원가입 성공!" : "> 회원가입 실패!");
break;
case "5" :
member = updateMember();
result = memberController.updateMember(member);
System.out.println(result > 0 ? "> " + result + "행 수정 완료!" : "> 회원 정보 수정 실패!");
break;
case "6" :
id = deleteMember();
result = memberController.deleteMember(id);
System.out.println(result > 0 ? "> " + result + "행 삭제 완료!" : "> 회원 탈퇴 실패!");
break;
case "0" : return;
default : System.out.println("잘못 입력하셨습니다.");
}
}
}
//2. 아이디 입력 받기
private String inputMemberId() {
System.out.print("> 아이디를 입력하세요 : ");
return sc.next();
}
/**
* 2. 아이디 조회
* 0 ~ 1건이 조회될 때, 실제 조회 결과가 0건이면, null을 리턴
*/
private void printMember(Member member) {
if(member == null) {
System.out.println("> 조회된 결과가 없습니다.");
} else {
System.out.println("-------------------------------------------");
System.out.printf("%-10s : %s\n", "id", member.getId());
System.out.printf("%-10s : %s\n", "name", member.getName());
System.out.printf("%-10s : %s\n", "gender", member.getGender());
System.out.printf("%-10s : %s\n", "birthday", member.getBirthday());
System.out.printf("%-10s : %s\n", "email", member.getEmail());
System.out.printf("%-10s : %s\n", "point", member.getPoint());
System.out.printf("%-10s : %s\n", "regDate", dateFormatRegDate.format(member.getRegDate()));
System.out.println("-------------------------------------------");
}
}
}
MemberController
public class MemberController {
private MemberDao memberDao = new MemberDao();
// 2. 아이디 조회
public Member findById(String id) {
return memberDao.findById(id);
}
}
MemberDao
public class MemberDao {
final String driverClass = "oracle.jdbc.OracleDriver";
final String url = "jdbc:oracle:thin:@localhost:1521:xe"; //db접속프로토콜@ip:포트:db명(sid)
final String user = "student";
final String password = "student";
// 2. 아이디 조회
public Member findById(String id) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rset = null;
Member member = null; // 0 ~ 1건 조회 시, 실제 조회 결과가 0건이면 null을 리턴
String sql = "select * from member where id = ?";
try {
Class.forName(driverClass);
conn = DriverManager.getConnection(url, user, password);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rset = pstmt.executeQuery();
while(rset.next()) {
member = new Member();
member.setId(id);
member.setName(rset.getString("name"));
member.setGender(rset.getString("gender"));
member.setBirthday(rset.getDate("birthday"));
member.setEmail(rset.getString("email"));
member.setPoint(rset.getInt("point"));
member.setRegDate(rset.getTimestamp("reg_date"));
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
rset.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return member;
}
}
@아이디 조회 해보기
******** 회원 정보 관리 ********
1. 전체 조회
2. 아이디 조회
3. 이름 검색
4. 회원가입
5. 회원 정보 변경
6. 회원 탈퇴
0. 프로그램 종료
*****************************
선택 : 2
> 아이디를 입력하세요 : honggd
-------------------------------------------
id : honggd
name : 홍길동
gender : M
birthday : 1999-09-09
email : honggd@naver.com
point : 1000
regDate : 20220502
-------------------------------------------
이름 검색
MemberMenu
public class MemberMenu {
private Scanner sc = new Scanner(System.in);
private MemberController memberController = new MemberController();
private SimpleDateFormat dateFormatRegDate = new SimpleDateFormat("yyyyMMdd");
public void mainMenu() {
String menu = "\n******** 회원 정보 관리 ********\n"
+ "1. 전체 조회\n"
+ "2. 아이디 조회\n"
+ "3. 이름 검색 \n"
+ "4. 회원가입\n"
+ "5. 회원 정보 변경\n"
+ "6. 회원 탈퇴\n"
+ "0. 프로그램 종료\n"
+ "*****************************\n"
+ "선택 : ";
while(true) {
System.out.print(menu);
String choice = sc.next();
Member member = null;
int result = 0;
String id = null;
List<Member> members = null;
String name = null;
switch(choice) {
case "1" :
members = memberController.findAll();
printMembers(members);
break;
case "2" :
id = inputMemberId();
member = memberController.findById(id);
printMember(member);
break;
case "3" :
name = inputMemberName();
members = memberController.findByName(name);
printMembers(members);
break;
case "4" :
member = inputMember();
result = memberController.inputMember(member);
System.out.println(result > 0 ? "> 회원가입 성공!" : "> 회원가입 실패!");
break;
case "5" :
member = updateMember();
result = memberController.updateMember(member);
System.out.println(result > 0 ? "> " + result + "행 수정 완료!" : "> 회원 정보 수정 실패!");
break;
case "6" :
id = deleteMember();
result = memberController.deleteMember(id);
System.out.println(result > 0 ? "> " + result + "행 삭제 완료!" : "> 회원 탈퇴 실패!");
break;
case "0" : return;
default : System.out.println("잘못 입력하셨습니다.");
}
}
}
// 3. 이름 검색
private String inputMemberName() {
System.out.print("> 찾으실 이름을 입력하세요 : ");
return sc.next();
}
/**
* 1. 전체 회원 조회 메소드 이용하여 출력
* 0 ~ n건이 조회될 때, 실제 조회 결과가 0건이면 빈 ArrayList객체를 반환
*/
private void printMembers(List<Member> members) {
if(members == null || members.isEmpty()) {
System.out.println("> 조회된 결과가 없습니다.");
} else {
System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",
"id", "name", "gender", "birthday", "email", "point", "regDate");
System.out.println("-------------------------------------------------------------------------");
for(Member member : members) {
System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",
member.getId(),
member.getName(),
member.getGender(),
member.getBirthday(),
member.getEmail(),
member.getPoint(),
dateFormatRegDate.format(member.getRegDate())
);
}
System.out.println("-------------------------------------------------------------------------");
}
}
MemberController
public class MemberController {
private MemberDao memberDao = new MemberDao();
// 3. 이름 조회
public List<Member> findByName(String name) {
return memberDao.findByName(name);
}
}
MemberDao
public class MemberDao {
final String driverClass = "oracle.jdbc.OracleDriver";
final String url = "jdbc:oracle:thin:@localhost:1521:xe"; //db접속프로토콜@ip:포트:db명(sid)
final String user = "student";
final String password = "student";
// 3. 이름 검색
public List<Member> findByName(String name) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rset = null;
List<Member> members = new ArrayList<>();
String sql = "select * from member where name like ?";
try {
Class.forName(driverClass);
conn = DriverManager.getConnection(url, user, password);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "%" + name + "%");
rset = pstmt.executeQuery();
while(rset.next()) {
Member member = new Member();
member.setId(rset.getString("id"));
member.setName(rset.getString("name"));
member.setGender(rset.getString("gender"));
member.setBirthday(rset.getDate("birthday"));
member.setEmail(rset.getString("email"));
member.setPoint(rset.getInt("point"));
member.setRegDate(rset.getTimestamp("reg_date"));
members.add(member);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
rset.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return members;
}
}
@이름 검색 해보기
******** 회원 정보 관리 ********
1. 전체 조회
2. 아이디 조회
3. 이름 검색
4. 회원가입
5. 회원 정보 변경
6. 회원 탈퇴
0. 프로그램 종료
*****************************
선택 : 3
> 찾으실 이름을 입력하세요 : 길동
id name gender birthday email point regDate
-------------------------------------------------------------------------
honggd 홍길동 M 1999-09-09 honggd@naver.com 1000 20220502
gogd 고길동 M 1980-02-15 gogd@naver.com 1000 20220502
-------------------------------------------------------------------------
회원 정보 변경
MemberMenu
public class MemberMenu {
private Scanner sc = new Scanner(System.in);
private MemberController memberController = new MemberController();
private SimpleDateFormat dateFormatRegDate = new SimpleDateFormat("yyyyMMdd");
public void mainMenu() {
String menu = "\n******** 회원 정보 관리 ********\n"
+ "1. 전체 조회\n"
+ "2. 아이디 조회\n"
+ "3. 이름 검색 \n"
+ "4. 회원가입\n"
+ "5. 회원 정보 변경\n"
+ "6. 회원 탈퇴\n"
+ "0. 프로그램 종료\n"
+ "*****************************\n"
+ "선택 : ";
while(true) {
System.out.print(menu);
String choice = sc.next();
Member member = null;
int result = 0;
switch(choice) {
case "1" : break;
case "2" : break;
case "3" : break;
case "4" :
member = inputMember();
result = memberController.inputMember(member);
System.out.println(result > 0 ? "> 회원가입 성공!" : "> 회원가입 실패!");
break;
case "5" :
member = updateMember();
result = memberController.updateMember(member);
System.out.println(result > 0 ? result + "행 수정 완료!" : "> 회원 정보 수정 실패!");
break;
case "6" : break;
case "0" : return;
default : System.out.println("잘못 입력하셨습니다.");
}
}
}
/**
* 5. 회원 정보 변경
* 이름, 성별, 생일, 이메일을 한번에 변경
*/
private Member updateMember() {
System.out.print("> 아이디를 입력하세요 : ");
String id = sc.next();
System.out.print("> 변경하실 이름을 입력하세요 : ");
String name = sc.next();
System.out.print("> 변경하실 성별을 입력하세요 : ");
String gender = String.valueOf(sc.next().toUpperCase().charAt(0));
System.out.print("> 변경하실 생일을 입력하세요 : ");
String temp = sc.next();
Date birthday = null;
try {
birthday = new Date(dateFormatRegDate.parse(temp).getTime());
} catch (ParseException e) {
e.printStackTrace();
}
System.out.print("> 변경하실 이메일을 입력하세요 : ");
String email = sc.next();
return new Member(id, name, gender, birthday, email, 0, null);
}
}
MemberController
public class MemberController {
private MemberDao memberDao = new MemberDao();
// 5. 회원 정보 변경
public int updateMember(Member member) {
return memberDao.updateMember(member);
}
}
MemberDao
public class MemberDao {
final String driverClass = "oracle.jdbc.OracleDriver";
final String url = "jdbc:oracle:thin:@localhost:1521:xe"; //db접속프로토콜@ip:포트:db명(sid)
final String user = "student";
final String password = "student";
// 5. 회원 정보 변경
public int updateMember(Member member) {
Connection conn = null;
PreparedStatement pstmt = null;
int result = 0;
String sql = "update member set name = ?, gender = ? , birthday = ?, email = ? where id = ?";
try {
Class.forName(driverClass);
conn = DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, member.getName());
pstmt.setString(2, member.getGender());
pstmt.setDate(3, member.getBirthday());
pstmt.setString(4, member.getEmail());
pstmt.setString(5, member.getId());
result = pstmt.executeUpdate();
conn.commit();
} catch (ClassNotFoundException | SQLException e) {
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
}
@회원 정보 변경하기
******** 회원 정보 관리 ********
1. 전체 조회
2. 아이디 조회
3. 이름 검색
4. 회원가입
5. 회원 정보 변경
6. 회원 탈퇴
0. 프로그램 종료
*****************************
선택 : 5
> 아이디를 입력하세요 : chany
> 변경하실 이름을 입력하세요 : 박채금
> 변경하실 성별을 입력하세요 : M
> 변경하실 생일을 입력하세요 : 19750405
> 변경하실 이메일을 입력하세요 : chany@naver.com
1행 수정 완료!
select * from member;
회원 탈퇴
MemberMenu
public class MemberMenu {
private Scanner sc = new Scanner(System.in);
private MemberController memberController = new MemberController();
private SimpleDateFormat dateFormatRegDate = new SimpleDateFormat("yyyyMMdd");
public void mainMenu() {
String menu = "\n******** 회원 정보 관리 ********\n"
+ "1. 전체 조회\n"
+ "2. 아이디 조회\n"
+ "3. 이름 검색 \n"
+ "4. 회원가입\n"
+ "5. 회원 정보 변경\n"
+ "6. 회원 탈퇴\n"
+ "0. 프로그램 종료\n"
+ "*****************************\n"
+ "선택 : ";
while(true) {
System.out.print(menu);
String choice = sc.next();
Member member = null;
int result = 0;
String id = null;
switch(choice) {
case "1" : break;
case "2" : break;
case "3" : break;
case "4" :
member = inputMember();
result = memberController.inputMember(member);
System.out.println(result > 0 ? "> 회원가입 성공!" : "> 회원가입 실패!");
break;
case "5" :
member = updateMember();
result = memberController.updateMember(member);
System.out.println(result > 0 ? "> " + result + "행 수정 완료!" : "> 회원 정보 수정 실패!");
break;
case "6" :
id = deleteMember();
result = memberController.deleteMember(id);
System.out.println(result > 0 ? "> " + result + "행 삭제 완료!" : "> 회원 탈퇴 실패!");
break;
case "0" : return;
default : System.out.println("잘못 입력하셨습니다.");
}
}
}
/**
* 6. 회원 탈퇴
*/
private String deleteMember() {
System.out.print("> 탈퇴할 아이디를 입력하세요 : ");
String id = sc.next();
return id;
}
}
MemberController
public class MemberController {
private MemberDao memberDao = new MemberDao();
// 6. 회원 탈퇴
public int deleteMember(String id) {
return memberDao.deleteMember(id);
}
}
MemberDao
public class MemberDao {
final String driverClass = "oracle.jdbc.OracleDriver";
final String url = "jdbc:oracle:thin:@localhost:1521:xe"; //db접속프로토콜@ip:포트:db명(sid)
final String user = "student";
final String password = "student";
// 6. 회원 탈퇴
public int deleteMember(String id) {
Connection conn = null;
PreparedStatement pstmt = null;
int result = 0;
String sql = "delete from member where id = ?";
try {
Class.forName(driverClass);
conn = DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
result = pstmt.executeUpdate();
conn.commit();
} catch (ClassNotFoundException | SQLException e) {
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
}
@회원 탈퇴하기
******** 회원 정보 관리 ********
1. 전체 조회
2. 아이디 조회
3. 이름 검색
4. 회원가입
5. 회원 정보 변경
6. 회원 탈퇴
0. 프로그램 종료
*****************************
선택 : 6
> 탈퇴할 아이디를 입력하세요 : chany
> 1행 삭제 완료!
select * from member;
LIST
'Java > └ [JDBC] Practice' 카테고리의 다른 글
[실습문제] JDBC 종합 (0) | 2022.05.10 |
---|