gwooden_코린이

java_MariaDB 활용02 본문

데이터베이스

java_MariaDB 활용02

gwooden22 2022. 12. 13. 10:57
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
Comments