기초JAVA 25강 - JDBC를 이용한 게시판 만들기

Whatever·2021년 10월 13일
0

기초 JAVA

목록 보기
25/26

내가 만든 JDBC board

public class JDBCBoard {
        JDBCUtil jdbc = JDBCUtil.getInstance();

public static void main(String[] args) {
	new JDBCBoard().start();
	 /* 조회, 등록, 수정, 삭제가 가능한 게시판을 만들어주세요.
	 * 
	 * 번호, 제목, 내용, 작성자, 작성일
	 * 
	 * 목록에서는 조회, 등록, 종료
	 * 상세화면에서는 수정, 삭제, 목록
	 */
	
	//테이블 목록 조회
	
	
}

//테이블 확인하기
private void start() {
	while(true) {
		
	String sql = "Select * from TB_JDBC_BOARD"; 
	List<Map<String, Object>> boardTable = jdbc.selectList(sql);
	//컬럼명 출력
	System.out.println("===================================");
	System.out.println("NO.\tTITLE\tUSER_ID\tREG_DATE");
	System.out.println("-----------------------------------");
	for(int i = boardTable.size() - 1; i >= 0; i--) {
		Map<String, Object> board = boardTable.get(i);
			System.out.print(board.get("BOARD_NO") 
            + "\t" + board.get("TITLE") 
            + "\t" + board.get("USER_ID") 
            + "\t" + board.get("REG_DATE")); 
			System.out.println();
			System.out.println("-----------------------------------");
		}
	
	System.out.print("1.조회  2.등록  0.종료>");
	int input = ScanUtil.nextInt();
	switch(input) {
	case 1:
		read();
		break;
	case 2:
		insert();
		break;
	case 0:
		System.out.println("게시판을 종료합니다.");
		System.exit(0);
		break;
	}
	//값만 거꾸로 출력 - 조회 SELECT ORDER BY DESC
	
	}
	
}

//등록 insert
void insert() {
	//번호 -> 현재 게시판의 번호에서 max찾아서 +1 , 날짜 - 현재날짜(sysdate)
	//sql = "insert into tb_jdbc_board values
	ArrayList<Object> param = new ArrayList<>();
	String sql = "insert into TB_JDBC_BOARD values (
                      (SELECT NVL(MAX(BOARD_NO),0)+1 FROM TB_JDBC_BOARD),? ,? ,? ,sysdate)";
	
	//param의 1,2,3 값 받기
	System.out.print("제목>");
	param.add(ScanUtil.nextLine());
	System.out.print("내용>");
	param.add(ScanUtil.nextLine());
	System.out.print("작성자>");
	param.add(ScanUtil.nextLine());
	int result = jdbc.update(sql, param);
	
	System.out.println(result + "개의 글이 등록되었습니다.");			
}

//수정 update
void update(int input) {
	ArrayList<Object> param = new ArrayList<>();
	String sql = "update TB_JDBC_BOARD 
                         set TITLE =?,CONTENT=?,USER_ID=? 
                       where BOARD_NO = ?";
	
	System.out.print("제목>");
	param.add(ScanUtil.nextLine());
	System.out.print("내용>");
	param.add(ScanUtil.nextLine());
	System.out.print("작성자>");
	param.add(ScanUtil.nextLine());
	param.add(input);
	int result = jdbc.update(sql, param);
	
	System.out.println(result + "개의 행이 수정되었습니다.");
}

//삭제 delete
void delete(int input) {
	ArrayList<Object> param = new ArrayList<>();
	String sql = "delete from TB_JDBC_BOARD where BOARD_NO = ?";
	
	param.add(input);
	int result = jdbc.update(sql, param);
	System.out.println(result + "개의 행이 삭제되었습니다.");
}

void read() {
	ArrayList<Object> param = new ArrayList<>();
	String sql = "select * from TB_JDBC_BOARD where BOARD_NO = ?";
	System.out.println("조회할 게시물 번호>");
	

	int input = ScanUtil.nextInt();
	param.add(input);
	 Map<String, Object> board = jdbc.selectOne(sql, param);
	
		System.out.println("==================================");
		System.out.println("번호\t: " + board.get("BOARD_NO"));
		System.out.println("작성자\t: " + board.get("USER_ID"));
		System.out.println("제목\t: " + board.get("TITLE"));
		System.out.println("내용\t: " + board.get("CONTENT"));
		System.out.println("작성일\t: " + board.get("REG_DATE"));
		System.out.println("===================================");
		
		System.out.println("1.수정\t2.삭제\t0.목록");
		int answer = ScanUtil.nextInt();
		switch(answer) {
		case 1: 
			update(input);
			break;
		case 2:
			delete(input);
			break;
		case 0:
			break;
		}
	//param.add에 조회할 게시물 번호랑 같은 것 찾기
	
}
}

선생님이 만든 JDBC board

public class JDBCBoard {

public static void main(String[] args) {
	new JDBCBoard().start();
	 /* 조회, 등록, 수정, 삭제가 가능한 게시판을 만들어주세요.
	 * 
	 * 번호, 제목, 내용, 작성자, 작성일
	 * 
	 * 목록에서는 조회, 등록, 종료
	 * 상세화면에서는 수정, 삭제, 목록
	 */
	
	//테이블 목록 조회
	
}

JDBCUtil jdbc = JDBCUtil.getInstance();//JDBCUtil을 전역변수로 선언

//테이블 확인하기
private void start() {
	while(true) {
		
	String sql = "SELECT A.BOARD_NO"//쿼리 작성, 게시판테이블과 MEMBER테이블과 JOIN ,*는 사용지양
			+ "			,A.TITLE"
			+ "			,B.MEM_NAME AS USER_NAME"
			+ "			,TO_CHAR(A.REG_DATE, 'MM/DD') AS REG_DATE"
			+ "	    FROM TB_JDBC_BOARD A" //기준이 되는 테이블
			+ "	    LEFT OUTER JOIN MEMBER B ON A.USER_ID = B.MEM_ID" 
                                   //LEFT OUTER JOIN 이후의 테이블 : 부수적으로 사용하는 테이블
			+ "    ORDER BY A.BOARD_NO DESC"; 
	List<Map<String, Object>> boardList = jdbc.selectList(sql);
	//컬럼명 출력
	System.out.println("===================================");
	System.out.println("번호\t제목\t작성자\t작성일");
	for(Map<String, Object> board : boardList) {
		System.out.println("-----------------------------------");
			System.out.println(board.get("BOARD_NO") 
					+ "\t" + board.get("TITLE") 
					+ "\t" + board.get("USER_NAME") 
					+ "\t" + board.get("REG_DATE")); 
		}
	System.out.println("===================================");
	
	System.out.print("1.조회  2.등록  0.종료>");
	int input = ScanUtil.nextInt();
	
	switch(input) {
	case 1:
		read();
		break;
	case 2:
		insert();
		break;
	case 0:
		System.out.println("프로그램이 종료되었습니다.");
		System.exit(0);
	}
	//값만 거꾸로 출력 - 조회 SELECT ORDER BY DESC
	
	}
	
}

//등록 insert
void insert() {
	System.out.print("제목>");
	String title = ScanUtil.nextLine();
	System.out.print("내용>");
	String content = ScanUtil.nextLine();
	System.out.print("작성자>");
	String userId = ScanUtil.nextLine();
	
	String sql = "INSERT INTO TB_JDBC_BOARD"
			+ "   VALUES ("
			+ "          (SELECT NVL(MAX(BOARD_NO), 0) + 1 FROM TB_JDBC_BOARD)"
                                            //NULL대신 0이 나오도록
			+ "        , ?"
			+ "        , ?"
			+ "        , ?"
			+ "        , SYSDATE)";
	ArrayList<Object> param = new ArrayList<>();
	param.add(title);
	param.add(content);
	param.add(userId);
	
	if(0 < jdbc.update(sql,param)) {
		System.out.println("게시글이 등록되었습니다.");			
	}else {
		System.out.println("게시글 등록에 실패하였습니다.");
	}
}

void read() {
	System.out.println("조회할 게시물 번호>");
	int boardNo = ScanUtil.nextInt();
	
	String sql = "SELECT A.BOARD_NO"//쿼리 작성, 게시판테이블과 MEMBER테이블과 JOIN ,*는 사용지양
			+ "			,A.TITLE"
			+ "			,A.CONTENT"		
			+ "			,B.MEM_NAME AS USER_NAME"
			+ "			,TO_CHAR(A.REG_DATE, 'MM/DD') AS REG_DATE"
			+ "	    FROM TB_JDBC_BOARD A"
			+ "	    LEFT OUTER JOIN MEMBER B ON A.USER_ID = B.MEM_ID"
			+ "    WHERE A.BOARD_NO = ?";
	
	ArrayList<Object> param = new ArrayList<>();
	param.add(boardNo);
	Map<String, Object> board = jdbc.selectOne(sql, param);
	
	System.out.println("==================================");
	System.out.println("번호\t: " + board.get("BOARD_NO"));
	System.out.println("----------------------------------");
	System.out.println("작성자\t: " + board.get("USER_NAME"));
	System.out.println("----------------------------------");
	System.out.println("작성일\t: " + board.get("REG_DATE"));
	System.out.println("----------------------------------");
	System.out.println("제목\t: " + board.get("TITLE"));
	System.out.println("----------------------------------");
	System.out.println("내용\t: " + board.get("CONTENT"));
	System.out.println("===================================");
	
	System.out.print("1.수정\t2.삭제\t0.목록");
	int input = ScanUtil.nextInt();
	switch(input) {
	case 1: 
		update(boardNo);//수정과 삭제를 하려면 어떤 게시물을 할건지 정보가 필요 - 파라미터 필요
		break;
	case 2:
		delete(boardNo);//수정과 삭제를 하려면 어떤 게시물을 할건지 정보가 필요 - 파라미터 필요
		break;
	case 0:
		break;
	}
	
}

//수정 update
void update(int boardNo) {
	System.out.print("제목>");
	String title = ScanUtil.nextLine();
	System.out.print("내용>");
	String content = ScanUtil.nextLine();
	
	String sql = "UPDATE TB_JDBC_BOARD "
			+ "      SET TITLE = ?"
			+ "        , CONTENT = ? "
			+ "    WHERE BOARD_NO = ?";
	ArrayList<Object> param = new ArrayList<>();
	param.add(title);
	param.add(content);
	param.add(boardNo);
	if(0 < jdbc.update(sql, param)) {
		System.out.println("게시글이 수정되었습니다.");
	}else {
		System.out.println("게시글 수정에 실패하였습니다.");
	}
	
}

//삭제 delete
void delete(int boardNo) {
	System.out.println("정말 삭제하시겠습니까?(Y/N)>");
	if(ScanUtil.nextLine().equals("Y")) {
		String sql = "DELETE FROM TB_JDBC_BOARD "
				+ "    WHERE BOARD_NO = ?";
		ArrayList<Object> param = new ArrayList<>();
		param.add(boardNo);
		if(0<jdbc.update(sql, param)) {
			System.out.println("게시글이 삭제되었습니다.");
			
		}else {
			System.out.println("게시글 삭제에 실패하였습니다.");			
		}
	}
}


}

0개의 댓글

관련 채용 정보