gwooden_코린이
java_MariaDB 활용02 본문
728x90
package DB2;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class MemMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //입력문
MemberDAO dao = new MemberDAO(); //DAO메서드를 가져다 쓰기 위해 객체 생성
int menu; //입력한 메뉴 번호 저장 변수
System.out.println("===회원관리 프로그램===");
while(true) {
System.out.print("메뉴선택[1.회원목록]");
menu = sc.nextInt();
switch(menu) {
case 1:
List<MemberVO> list = new ArrayList<>(); // return된 컬렉션을 저장하는 공간
list = dao.list(); // 메서드 호출 결과를 list에 저장
//위 컬렉션을 이렇게 한번에 코드입력도 가능List<MemberVO> list = dao.list();
for(int i = 0; i < list.size(); i++) {
System.out.print("번호 : " + list.get(i).getMemberno() + "\t");
System.out.print("아이디 : " + list.get(i).getId() + "\t");
System.out.println("이름 : " + list.get(i).getName());
}
break;
}
}
}
}
package DB2;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class MemberDAO {
//PreparedStatement 기능확장 (재사용면에서 매우 편리함) / 단점으로는 코드가 길어짐
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
//생성자
public MemberDAO() {
try { //마리아db 데이터베이스에 연결
Class.forName("org.mariadb.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mariadb://localhost:3306/javadb", "root", "java1234");
} catch (Exception e) {
e.printStackTrace(); // Driver를 못 찾았을때 예외처리
}
}
//메서드 생성
//전체 레코드를 조회하는 메서드
public List<MemberVO> list() { //객체들을 보관하기 위한 List 컬렉션 생성 (추가, 삭제 등으로 위한 컬레션을 사용하는게 좋음)
List<MemberVO> list = new ArrayList<>(); //list에 담겨 있는 VO객체를 Main으로 보내 최종 작업
try {
String sql = "select * from member";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery(); //
while(rs.next()) {
MemberVO vo = new MemberVO(); //빈 객체를 위에 list에 넣어줄 려고
//set으로 호출 -> get으로 값을 MemberVO 클래스에 값을 보내 보관
//VO 객체에 멤버변수가 저장
vo.setMemberno(rs.getInt("memberno"));
vo.setId(rs.getString("id"));
vo.setName(rs.getString("name"));
list.add(vo); //list에 다음값이 있을때 까지 반복해서 객체를 넣는다.
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
package DB2;
public class MemberVO {
private int memberno;
private String id;
private String name;
public int getMemberno() {
return memberno;
}
public void setMemberno(int memberno) {
this.memberno = memberno;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
1. DB에 데이터를 추가할때(INSERT)
case 2 : //추가
MemberVO vo = new MemberVO(); //객체 생성
System.out.println("회원 등록을 시작합니다.");
System.out.println("회원 번호 : ");
vo.setMemberno(sc.nextInt());
System.out.println("회원 아이디 : ");
vo.setId(sc.next());
System.out.println("회원 이름 : ");
vo.setName(sc.next());
dao.insert(vo);
break;
//insert 삽입 메서드
public void insert(MemberVO vo) {
try {
//PreparedStatement를 이용하면 기존에 난잡한 수식이 아닌 ? <--로 표기 가능
//괄호안에 ? 개수는 필드개수와 동일
String sql = "insert into member values(?, ?, ?)";
pstmt = conn.prepareStatement(sql);
//vlaues(?, ?, ?) <-- 이 안에 어떤 값을 넣을지 설정
pstmt.setInt(1, vo.getMemberno());
pstmt.setString(2, vo.getId());
pstmt.setString(3, vo.getName());
rs = pstmt.executeQuery(); //위에서 실행된 결과를 rs에 저장
System.out.println("회원 등록 성공!");
} catch (Exception e) {
System.out.println("회원 등록 실패");
e.printStackTrace();
}
}
2. DB에 데이터를 수정할때(UPDATE)
case 3 : //수정
vo = new MemberVO();
System.out.println("회원 정보를 수정합니다.");
System.out.println("회원 번호 수정 : ");
vo.setMemberno(sc.nextInt());
System.out.println("회원 아이디 수정 : ");
vo.setId(sc.next());
System.out.println("회원 이름 수정 : ");
vo.setName(sc.next());
dao.update(vo);
break;
//update 수정 메서드
public void update(MemberVO vo) {
try { //UPDATE member SET id='qwer' WHERE memberno=1
String sql = "update member set id=?, name=? where memberno=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, vo.getId());
pstmt.setString(2, vo.getName());
pstmt.setInt(3, vo.getMemberno());
rs = pstmt.executeQuery(); //위에서 실행된 결과를 rs에 저장
System.out.println("회원 정보 수정 완료!");
} catch (Exception e) {
System.out.println("회원 정보 수정 오류");
e.printStackTrace();
}
}
3. DB에 데이터를 삭제할때(DELETE)
case 4 : //삭제
MemberVO vod = new MemberVO();
System.out.println("회원 정보를 삭제합니다.");
System.out.println("삭제할 회원 번호 : ");
vod.setMemberno(sc.nextInt());
dao.delete(vod);
break;
//delete 삭제 메서드
public void delete(MemberVO vod) {
try { //DELETE FROM member WHERE memberno=2
String sql = "delete from member where memberno=?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, vod.getMemberno());
rs = pstmt.executeQuery(); //위에서 실행된 결과를 rs에 저장
System.out.println("회원 정보 삭제 완료!");
} catch (Exception e) {
System.out.println("회원 정보 삭제 오류");
e.printStackTrace();
}
}
4. DB에 데이터를 조회할때(SELECT)
case 5 : //조회
System.out.println("회원 정보를 조회합니다.");
System.out.println("조회할 회원 번호 : ");
List<MemberVO> sList = dao.select(sc.nextInt());
for(int i = 0; i < sList.size(); i++) {
System.out.print("번호 : " + sList.get(i).getMemberno() + "\t");
System.out.print("아이디 : " + sList.get(i).getId() + "\t");
System.out.println("이름 : " + sList.get(i).getName());
}
break;
//select 조회 메서드
//pstmt = conn.prepareStatement(spl); //데이터 베이스로 spl를 보냄 spl은 위에 입력된 코드
public List<MemberVO> select(int no) {
List<MemberVO> list = new ArrayList<>(); //select 저장용 컬레션
try { //select 필드명, 필드명, from 테이블명
String sql = "select * from member where memberno=?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, no);
rs = pstmt.executeQuery(); //위에서 실행된 결과를 rs에 저장
while(rs.next()) {
MemberVO vo = new MemberVO();
vo.setMemberno(rs.getInt("memberno"));
vo.setId(rs.getString("id"));
vo.setId(rs.getString("name"));
list.add(vo);
}
System.out.println("회원 정보 조회 완료!");
} catch (Exception e) {
System.out.println("회원 정보 조회 오류");
e.printStackTrace();
}
return list;
}
5. 스캐너에서 입력 값을 잘못 넣었을때
default :
System.out.println("잘 못 입력하셨습니다.");
6. 값을 잘 못 넣었을때 종료
while(true) {
System.out.print("메뉴선택[1.회원목록 2.회원등록 3.회원정보수정 4.회원정보삭제 5.회원정보조회 6.프로그램종료]");
menu = sc.nextInt();
if(menu == 6) {
System.out.println("프로그램을 종료 합니다.");
break;
}
- 기능 추가
7. 스캐너에서 입력 값을 잘못 넣었을때
if(sList.isEmpty()) {//빈 컬렉션인지 물어보는 메서드
System.out.println("해당 회원이 없음");
} else {
}
없는 회원번호를 입력했을때 .isEmpty() 메서드 사용
8. UPDATE 메서드 업그레이드
기존 : 회원정보수정 -> ID, NAME 전체 수정
변경 : 회원정보수정 -> 전체수정 / ID 수정 / NAME 수정 (더 세분화) -> 후에 고른 번호로 데이터 수정 진행
case 3 : //수정
vo = new MemberVO();
System.out.println("회원 정보를 수정합니다.");
System.out.print("[1.전체 수정 2.id만 수정 3.이름만 수정");
numm = sc.nextInt();
//특정 값만 수정할 수 있게 기능 추가
switch(numm) {
case 1 :
System.out.println("회원 번호 입력 : ");
vo.setMemberno(sc.nextInt());
System.out.println("회원 아이디 수정 : ");
vo.setId(sc.next());
System.out.println("회원 이름 수정 : ");
vo.setName(sc.next());
break;
case 2 :
System.out.println("회원 번호 입력 : ");
vo.setMemberno(sc.nextInt());
System.out.println("회원 아이디 수정 : ");
vo.setId(sc.next());
break;
case 3 :
System.out.println("회원 번호 입력 : ");
vo.setMemberno(sc.nextInt());
System.out.println("회원 이름 수정 : ");
vo.setName(sc.next());
break;
}
dao.update(vo, numm);
break;
//update 수정 메서드
public void update(MemberVO vo, int numm) {
//조회 추가 기능
// switch(vo.getNumm()) {
if(numm == 1) {
try { //UPDATE member SET id='qwer' WHERE memberno=1
String sql = "update member set id=?, name=? where memberno=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, vo.getId());
pstmt.setString(2, vo.getName());
pstmt.setInt(3, vo.getMemberno());
rs = pstmt.executeQuery(); //위에서 실행된 결과를 rs에 저장
System.out.println("회원 정보 수정 완료!");
} catch (Exception e) {
System.out.println("회원 정보 수정 오류");
e.printStackTrace();
}
} else if(numm == 2) {
try { //UPDATE member SET id='qwer' WHERE memberno=1
String sql = "update member set id=? where memberno=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, vo.getId());
pstmt.setInt(2, vo.getMemberno());
rs = pstmt.executeQuery(); //위에서 실행된 결과를 rs에 저장
System.out.println("회원 정보 수정 완료!");
} catch (Exception e) {
System.out.println("회원 정보 수정 오류");
e.printStackTrace();
}
} else if(numm == 3) {
try { //UPDATE member SET id='qwer' WHERE memberno=1
String sql = "update member set name=? where memberno=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, vo.getName());
pstmt.setInt(2, vo.getMemberno());
rs = pstmt.executeQuery(); //위에서 실행된 결과를 rs에 저장
System.out.println("회원 정보 수정 완료!");
} catch (Exception e) {
System.out.println("회원 정보 수정 오류");
e.printStackTrace();
}
}
}
728x90
'데이터베이스' 카테고리의 다른 글
데이터 베이스 오라클 11g xe 설치 및 오라클 sql Developer 세팅해보기 (0) | 2023.01.09 |
---|---|
데이터 베이스란? (0) | 2022.12.21 |
java_데이터베이스01 (0) | 2022.12.12 |
mariaDB(마리아DB) 설치해보기 (0) | 2022.12.12 |
java_네트워크에 대해 (0) | 2022.12.12 |
Comments