[JDBC] 과제_0825 (4)

잠이보약·2023년 8월 27일

과제

목록 보기
4/5
post-thumbnail

앞선 내용을 바탕으로 전체 조회 및 단건 조회, 조인 조회 메소드를 생성한다.

	public List<MembersVO> selectAllMembers (){

		Connection conn = makeConnection();

		//쿼리 생성
		StringBuffer query = new StringBuffer();
		query.append(" SELECT MEMBER_ID ");
		query.append("      , MEMBER_NAME ");
		query.append("      , MEMBER_GRADE ");
		query.append("      , PROFILE_IMG ");
		query.append("   FROM MEMBERS ");

		//쿼리 실행 준비
		PreparedStatement pstmt = null;
		try {
			pstmt = conn.prepareStatement(query.toString());
		} catch (SQLException e) {
			System.out.println("쿼리에 문제가 있습니다.");
			System.out.println(e.getMessage());
			closeConnection(conn);
			return null;
		}

		//쿼리 실행 결과 받아오기
		ResultSet rs = null;
		try {
			rs = pstmt.executeQuery();
		} catch (SQLException e) {
			System.out.println("쿼리 실행 결과를 받아오는 중에 문제가 생겼습니다."); 
			System.out.println("사유: " + e.getMessage());
			closePreparedStatement(pstmt);
			closeConnection(conn);
			return null;
		}

		List<MembersVO> members = new ArrayList<>();
		MembersVO memberVO = null;

		try {
			while (rs.next()) {
				memberVO = new MembersVO();
				memberVO.setMemberId( rs.getString("MEMBER_ID") );
				memberVO.setMemberName( rs.getString("MEMBER_NAME") );
				memberVO.setMemberGrade( rs.getString("MEMBER_GRADE") );
				memberVO.setProfileImg( rs.getString("PROFILE_IMG") );

				members.add(memberVO);
			}
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		} finally {
			closeResultSet(rs);
			closePreparedStatement(pstmt);
			closeConnection(conn);
		}

		return members;
	}

	public MembersVO selectOneMemberByMemberId (String memberId) {

		Connection conn = makeConnection();

		//쿼리 생성
		StringBuffer query = new StringBuffer();
		query.append(" SELECT MEMBER_ID ");
		query.append("      , MEMBER_NAME ");
		query.append("      , MEMBER_GRADE ");
		query.append("      , PROFILE_IMG ");
		query.append("   FROM MEMBERS ");
		query.append("  WHERE MEMBER_ID = ? ");

		//쿼리 실행 준비
		PreparedStatement pstmt = null;
		try {
			pstmt = conn.prepareStatement(query.toString());
		} catch (SQLException e) {
			System.out.println("쿼리에 문제가 있습니다.");
			System.out.println(e.getMessage());
			closeConnection(conn);
			return null;
		}

		//바인딩
		try {
			pstmt.setString(1, memberId);
		} catch (SQLException e) {
			System.out.println("파라미터 바인딩 과정에서 예외가 발생했습니다.");
			System.out.println("사유: " + e.getMessage());
			closePreparedStatement(pstmt);
			closeConnection(conn);
			return null;
		}

		//쿼리 실행 결과 받아오기
		ResultSet rs = null;
		try {
			rs = pstmt.executeQuery();
		} catch (SQLException e) {
			System.out.println("쿼리 실행 결과를 받아오는 중에 문제가 생겼습니다."); 
			System.out.println("사유: " + e.getMessage());
			closePreparedStatement(pstmt);
			closeConnection(conn);
			return null;
		}

		MembersVO memberVO = null;

		try {
			if (rs.next()) {
				memberVO = new MembersVO();
				memberVO.setMemberId( rs.getString("MEMBER_ID") );
				memberVO.setMemberName( rs.getString("MEMBER_NAME") );
				memberVO.setMemberGrade( rs.getString("MEMBER_GRADE") );
				memberVO.setProfileImg( rs.getString("PROFILE_IMG") );
			}
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		} finally {
			closeResultSet(rs);
			closePreparedStatement(pstmt);
			closeConnection(conn);
		}

		return memberVO;
	}

	public MembersVO selectOneMemberAndArticleByMemberId (String memberId) {

		Connection conn = makeConnection();

		//쿼리 생성
		StringBuffer query = new StringBuffer();
		query.append(" SELECT M.MEMBER_ID ");
		query.append("      , M.MEMBER_NAME ");
		query.append("      , M.MEMBER_GRADE ");
		query.append("      , M.PROFILE_IMG ");
		query.append("      , A.ARTICLE_ID ");
		query.append("      , A.BOARD_ID ");
		query.append("      , A.ARTICLE_TITLE ");
		query.append("      , TO_CHAR(A.UPLOAD_DATE, 'YYYY-MM-DD') UPLOAD_DATE ");
		query.append("      , A.ARTICLE_MAIN ");
		query.append("      , A.LIKE_COUNT ");
		query.append("      , A.VIEW_COUNT ");
		query.append("   FROM MEMBERS M ");
		query.append("   JOIN ARTICLES A ");
		query.append("     ON M.MEMBER_ID = A.MEMBER_ID ");
		query.append("  WHERE M.MEMBER_ID = ? ");

		//쿼리 실행 준비
		PreparedStatement pstmt = null;
		try {
			pstmt = conn.prepareStatement(query.toString());
		} catch (SQLException e) {
			System.out.println("쿼리에 문제가 있습니다.");
			System.out.println(e.getMessage());
			closeConnection(conn);
			return null;
		}

		//바인딩
		try {
			pstmt.setString(1, memberId);
		} catch (SQLException e) {
			System.out.println("파라미터 바인딩 과정에서 예외가 발생했습니다.");
			System.out.println("사유: " + e.getMessage());
			closePreparedStatement(pstmt);
			closeConnection(conn);
			return null;
		}

		//쿼리 실행 결과 받아오기
		ResultSet rs = null;
		try {
			rs = pstmt.executeQuery();
		} catch (SQLException e) {
			System.out.println("쿼리 실행 결과를 받아오는 중에 문제가 생겼습니다."); 
			System.out.println("사유: " + e.getMessage());
			closePreparedStatement(pstmt);
			closeConnection(conn);
			return null;
		}

		MembersVO memberVO = null;
		ArticlesVO articleVO = null;

		try {
			if (rs.next()) {
				memberVO = new MembersVO();
				memberVO.setMemberId( rs.getString("MEMBER_ID") );
				memberVO.setMemberName( rs.getString("MEMBER_NAME") );
				memberVO.setMemberGrade( rs.getString("MEMBER_GRADE") );
				memberVO.setProfileImg( rs.getString("PROFILE_IMG") );

				articleVO = new ArticlesVO();
				articleVO.setArticleId( rs.getString("ARTICLE_ID") );
				articleVO.setMemberId( rs.getString("MEMBER_ID") );
				articleVO.setBoardId( rs.getString("BOARD_ID") );
				articleVO.setArticleTitle( rs.getString("ARTICLE_TITLE") );
				articleVO.setUploadDate( rs.getString("UPLOAD_DATE") );
				articleVO.setArticleMain( rs.getString("ARTICLE_MAIN") );
				articleVO.setLikeCount( rs.getInt("LIKE_COUNT") );
				articleVO.setViewCount( rs.getInt("VIEW_COUNT") );

				memberVO.setArticles(null);
			}
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		} finally {
			closeResultSet(rs);
			closePreparedStatement(pstmt);
			closeConnection(conn);
		}

		return memberVO;

	}
profile
백엔드 개발자 지망생

0개의 댓글