본문 바로가기

Web Programming

방명록 CRUD (Create Read Update Delete) 기능 구현

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
이제 앞서 만들었던 데이터베이스로의 접속과 접속해제를 가지고 CRUD를 구현하겠습니다. 먼저 게시물을 삽입하는 겁니다..

          /**

          * 데이터베이스에 새로운 레코드를 삽입하도록 한다.

          *

          * @param guestbook

          *            새롭게 삽입될 방명록

          * @return 성공적으로 등록이 되는경우 참을 아닌경우에는 거짓을 반환한다.

          */

          boolean insertDB(GuestBook guestbook) {

                    connect();

                    String sql = "insert into guestbook(gb_name,gb_pass,gb_content,gb_date,gb_time) values (?,?,?,sysdate,CURRENT_TIMESTAMP)";

                    try {

                               pstmt = conn.prepareStatement(sql);

                               pstmt.setString(1, guestbook.getGb_name());

                               pstmt.setString(2, guestbook.getGb_passwd());

                               pstmt.setString(3, guestbook.getGb_content());

                               pstmt.executeUpdate();

                    } catch (SQLException e) {

                               e.printStackTrace();

                               return false;

                    } finally {

                               disconnect();

                    }

                    return true;

          }

아주 간단합니다. SQL문을 사용하여 새로운 레코드를 만들어주면 되구요.. 작성된 날짜와 시간은 알아서 DB에서 제공해주는 sysdate 와 current_timestamp를 사용해서 찍어주면 됩니다.. ^^ 그리고 앞서 만들어 놨떤 글 번호는 시퀀서를 이용해서 자동으로 1씩 증가하게 되지요~~



이번엔 수정하는 경우의 메소드입니다.

          /**

          * 데이터베이스에 이미 등록된 글을 가져와서 수정하는 역할을 하는 메소드

          *

          * @param guestBook

          *            이미 등록되어 있는

          * @return 성공적으로 글을 수정한 경우엔 참을 아닌 경우에는 거짓을 반환한다.

          */

          boolean updateDB(GuestBook guestBook) {

                    connect();

                    String sql = "update guestbook set gb_name=?, gb_pass=?, gb_content=?, gb_date=sysdate, gb_time=CURRENT_TIMESTAMP where gb_id=?";

                    try {

                               pstmt = conn.prepareStatement(sql);

                               pstmt.setString(1, guestBook.getGb_name());

                               pstmt.setString(2, guestBook.getGb_passwd());

                               pstmt.setString(3, guestBook.getGb_content());

                               pstmt.setInt(4, guestBook.getGb_id());

                               pstmt.executeUpdate();

                    } catch (SQLException e) {

                               e.printStackTrace();

                               return false;

                    } finally {

                               disconnect();

                    }

                    return true;

          }

insert와 굉장히 유사합니다~~ +_+ 하지만.. sql문을 보시면 알겠듯이 수정하는거죠.. where문을 보면 특정 글번호를 가지고 찾아옵니다. 특정 글번호는 수정하고 있는 글의 번호가 되겠지요... +_+ 나머지들은 수정된 요소들이 되는거구요..


다음으로는 삭제하는 겁니다~~

          /**

          * 데이터베이스에 등록된 게시물을 삭제하는 메소드

          *

          * @param gb_id

          *            원하는 게시물의 글번호

          * @return 글이 성공적으로 삭제되는 경우에는 참을 아닌 경우에는 거짓을 반환한다.

          */

          boolean deleteDB(int gb_id) {

                    connect();

                    String sql = "delete from guestbook where gb_id=?";

                    try {

                               pstmt = conn.prepareStatement(sql);

                               pstmt.setInt(1, gb_id);

                               pstmt.executeQuery();

                    } catch (SQLException e) {

                               e.printStackTrace();

                               return false;

                    }

                    return true;

          }

sql문을 이용해서 지우는걸 보실수 있습니다.. 그리고 특정 글번호를 이용해서 삭제를 합니다~~


그리고 마지막으로는 단일 레코드와 레코드의 목록을 가져오는 것들입니다.

          /**

          * 원하는 게시물을 가져오는 메소드

          *

          * @param gb_id

          *            가져오고 싶은 게시물의 글번호

          * @return 찾은 게시물을 GuestBook 클래스의 객체로 반환한다. 만약 반환이 안되는 경우에는 null 값인

          *         GuestBook 객체를 전달하겠죠.

          */

          GuestBook getDB(int gb_id) {

                    connect();

                    String sql = "select * from guestbook where gb_id=?";

                    GuestBook guestbook = new GuestBook();

                    try {

                               pstmt = conn.prepareStatement(sql);

                               pstmt.setInt(1, gb_id);

                               ResultSet rs = pstmt.executeQuery();

                               rs.next();

                               guestbook.setGb_id(rs.getInt("gb_id"));

                              guestbook.setGb_name(rs.getString("gb_name"));

                               guestbook.setGb_passwd(rs.getString("gb_passwd"));

                               guestbook.setGb_passwd(rs.getString("gb_passwd"));

                               guestbook.setGb_date(rs.getDate("gb_date"));

                               guestbook.setGb_time(rs.getTimestamp("gb_time"));

                               rs.close();

                    } catch (SQLException e) {

                               e.printStackTrace();

                    } finally {

                               disconnect();

                    }

                    return guestbook;

          }

          /**

          * 여러개의 데이터베이스 레코드들을 가져온다.

          *

          * @return ArrayList 되어있는 레코드들의 집합인 객체를 반환한다.

          */

          ArrayList getDBList() {

                    connect();

                    ArrayList<GuestBook> datas = new ArrayList<GuestBook>();

                    String sql = "select * from guestbook";

                    try {

                               pstmt = conn.prepareStatement(sql);

                               ResultSet rs = pstmt.executeQuery();

                               while (rs.next()) {

                                         GuestBook guestbook = new GuestBook();

                                         guestbook.setGb_id(rs.getInt("gb_id"));

                                         guestbook.setGb_name(rs.getString("gb_name"));

                                         guestbook.setGb_passwd(rs.getString("gb_passwd"));

                                         guestbook.setGb_passwd(rs.getString("gb_passwd"));

                                         guestbook.setGb_date(rs.getDate("gb_date"));

                                         guestbook.setGb_time(rs.getTimestamp("gb_time"));

                                         datas.add(guestbook);

                               }

                               rs.close();

                    } catch (SQLException e) {

                               e.printStackTrace();

                    } finally {

                               disconnect();

                    }

                    return datas;

          }

}


하아.. 힘들군요.. 모두 정상적으로 작동이 됩디다... 안되면 알려주시구요 ㅋㅋㅋㅋ 또한 아래 클래스를 첨수하였습니다 ^^