티스토리 뷰

코딩/spring

DB연결 preparedstatement

ehzim 2024. 2. 25. 22:58

 


모든 값 조회

public List<Member> findAllMembers() {
    // 데이터베이스에 전달할 SQL을 정의합니다.
    String sql = "select * from member";
    Connection con = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;

    try {
        con = getConnection();
        // 데이터베이스에 전달할 SQL과 파라미터로 전달할 데이터들을 준비합니다.
        pstmt = con.prepareStatement(sql);

        // 준비된 SQL을 커넥션을 통해 실제 데이터베이스에 전달하고 결과를 얻습니다.
        rs = pstmt.executeQuery();

        List<Member> members = new ArrayList<>();

        // 결과가 있으면 각 회원의 정보를 객체로 만들어 리스트에 추가합니다.
        while (rs.next()) {
            Member member = new Member();
            member.setId(rs.getString("id"));
            member.setName(rs.getString("name"));
            // 다른 필드들에 대한 처리도 추가 가능

            members.add(member);
        }

        return members;
    } catch (SQLException e) {
        log.error("데이터베이스 오류", e);
        throw new RuntimeException("데이터베이스 오류", e);
    } finally {
        try {
            if (rs != null) {
                rs.close();
            }
            if (pstmt != null) {
                pstmt.close();
            }
            if (con != null) {
                con.close();
            }
        } catch (SQLException ex) {
            log.error("리소스 닫기 오류", ex);
            throw new RuntimeException("리소스 닫기 오류", ex);
        }
    }
}

 

 

 

특정 값 조회

public Member findById(String memberId) {
    // 데이터베이스에 전달할 SQL을 정의합니다.
    String sql = "select * from member where member_id = ?";
    Connection con = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;

    try {
        con = getConnection();
        // 데이터베이스에 전달할 SQL과 파라미터로 전달할 데이터들을 준비합니다.
        pstmt = con.prepareStatement(sql);
        // SQL의 첫 번째 ? 에 값을 지정합니다.
        pstmt.setString(1, memberId);

        // 준비된 SQL을 커넥션을 통해 실제 데이터베이스에 전달하고 결과를 얻습니다.
        rs = pstmt.executeQuery();

        // 결과가 있으면 해당 회원의 정보를 객체로 만들어 반환합니다.
        if (rs.next()) {
            Member member = new Member();
            member.setMemberId(rs.getString("member_id"));
            member.setMoney(rs.getInt("money"));
            // 다른 필드들에 대한 설정도 추가해야 합니다.
            // member.setFieldName(rs.getType("column_name"));

            return member;
        } else {
            // 결과가 없으면 해당 ID의 회원이 없다는 것을 나타내기 위해 null을 반환합니다.
            return null;
        }
    } catch (SQLException e) {
        log.error("데이터베이스 오류", e);
        throw new RuntimeException("데이터베이스 오류", e);
    } finally {
        try {
            if (rs != null) {
                rs.close();
            }
            if (pstmt != null) {
                pstmt.close();
            }
            if (con != null) {
                con.close();
            }
        } catch (SQLException ex) {
            log.error("리소스 닫기 오류", ex);
            throw new RuntimeException("리소스 닫기 오류", ex);
        }
    }
}

 

 

insert구문

 

public Member insertMember(Member newMember) throws SQLException {
    // 데이터베이스에 전달할 SQL을 정의합니다.
    String sql = "insert into member(id, name) values (?, ?)";
    Connection con = null;
    PreparedStatement pstmt = null;

    try {
        con = getConnection();
        // 데이터베이스에 전달할 SQL과 파라미터로 전달할 데이터들을 준비합니다.
        pstmt = con.prepareStatement(sql);

        // SQL의 각 ? 에 값을 지정합니다.
        pstmt.setString(1, newMember.getId());
        pstmt.setString(2, newMember.getName());

        // 준비된 SQL을 커넥션을 통해 실제 데이터베이스에 전달하고 영향 받은 DB row 수를 반환합니다.
        pstmt.executeUpdate();

        // 회원 추가 후, 추가된 회원 정보를 반환합니다.
        return newMember;
    } catch (SQLException e) {
        log.error("데이터베이스 오류", e);
        throw e;
    } finally {
        try {
            if (pstmt != null) {
                pstmt.close();
            }
            if (con != null) {
                con.close();
            }
        } catch (SQLException ex) {
            throw new RuntimeException("리소스 닫기 오류", ex);
        }
    }
}

 

 

업데이트 

public Member update(Member member) throws SQLException {
    // 데이터베이스에 전달할 SQL을 정의합니다.
    String sql = "update member set money = ? where member_id = ?";
    Connection con = null;
    PreparedStatement pstmt = null;

    try {
        con = getConnection();
        // 데이터베이스에 전달할 SQL과 파라미터로 전달할 데이터를 준비합니다.
        pstmt = con.prepareStatement(sql);
        // SQL의 첫 번째 ? 에 값을 설정합니다.
        pstmt.setInt(1, member.getMoney());
        pstmt.setString(2, member.getMemberId());
        // 준비된 SQL을 커넥션을 통해 실제 데이터베이스에 전달하고 영향 받은 DB row 수를 반환합니다.
        pstmt.executeUpdate();
        return member;
    } catch (SQLException e) {
        log.error("데이터베이스 오류", e);
        throw e;
    } finally {
        try {
            if (pstmt != null)
                pstmt.close();
            if (con != null)
                con.close();
        } catch (SQLException ex) {
            log.error("리소스 닫기 오류", ex);
        }
    }
}

 

 

 

삭제

public void deleteMember(String memberId) {
    // 데이터베이스에 전달할 SQL을 정의합니다.
    String sql = "delete from member where member_id = ?";
    Connection con = null;
    PreparedStatement pstmt = null;

    try {
        con = getConnection();
        // 데이터베이스에 전달할 SQL과 파라미터로 전달할 데이터를 준비합니다.
        pstmt = con.prepareStatement(sql);

        // SQL의 첫 번째 ? 에 값을 지정합니다.
        pstmt.setString(1, memberId);

        // 준비된 SQL을 커넥션을 통해 실제 데이터베이스에 전달하고 영향 받은 DB row 수를 확인하지 않습니다.
        pstmt.executeUpdate();
    } catch (SQLException e) {
        log.error("데이터베이스 오류", e);
        throw new RuntimeException("데이터베이스 오류", e);
    } finally {
        try {
            if (pstmt != null) {
                pstmt.close();
            }
            if (con != null) {
                con.close();
            }
        } catch (SQLException ex) {
            log.error("리소스 닫기 오류", ex);
            throw new RuntimeException("리소스 닫기 오류", ex);
        }
    }
}

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday