일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- https://velog.io/@velopert/create-typescript-react-component
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- toString
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- object
- 게시판
- 출처 : https://webdir.tistory.com/506
- Today
- Total
Back Ground
게시판 만들기 - DAO 본문
package pdh.DAO;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import util.DBManager;
public class BoardDAO {
//기본 생성자
private BoardDAO(){}
//싱글톤
private static BoardDAO instance= new BoardDAO();
public static BoardDAO getInstance(){
return instance;
}
//=======================================================================List 모든 컬럼 보여주기
public List<BoardVO> selectAllBoards(){
String sql = "select * from boardtest1 order by num desc";
List<BoardVO> list = new ArrayList<BoardVO>();
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
/*conn- Mysql연결
stmt- sql연결
rs-저장*/
conn = DBManager.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()){
//BoardVO 인스턴스가 밖에 있으면 저장된 가장 처음부분만 불러와서
//sql문 첫번째 컬럼만 나오게 된다.
BoardVO bVo = new BoardVO();
//ResultSet에 SQL이 저장 되있는데 getInt | getString으로 불러 온다.
bVo.setNum(rs.getInt("num"));
bVo.setName(rs.getString("name"));
bVo.setEmail(rs.getString("email"));
bVo.setPass(rs.getString("pass"));
bVo.setTitle(rs.getString("title"));
bVo.setContent(rs.getString("content"));
bVo.setReadcount(rs.getInt("readcount"));
bVo.setWritedate(rs.getTimestamp("writedate"));
list.add(bVo); //list에 bVo 값들을 추가한다.
}// next로 더 이상 읽을게 없을때까지 반복
}catch(Exception e){e.printStackTrace();//예외상황
}finally{
DBManager.close(conn, stmt, rs); //사용한 conn, stmt, rs 를 닫아준다.
}
return list; //bVo를 반복하여 담은 값(list)를 return(돌려준다)
}//=======================================================================selectAllBoards END
//=======================================================================게시글 입력하기
public void insertBoard(BoardVO bVo){
String sql = "insert into boardtest1 ( name, email, pass, title, content,writedate) values(?,?,?,?,?,now())";
//오라클에서 num을 증가시킬땐[SQL] create sequence board_seq(시퀀스이름) start with 1 increment by 1; 를하고
//"insert into boardtest1 (num, name, email, pass, title, content) values(board_seq.nextval,?,?,?,?,?)"; 을 하면 된다
//board_seq.nextval (시퀀스이름.다음값)
//MySQL에서 writedate의 Date(날짜)값을 입력하기위해 now()를 사용한다.
Connection conn =null; //초기화 시킨다.
PreparedStatement pstmt = null;
//Statement :SQL을 동작시키는데 Prepared(준비된)Statement는 ?로 값이 들어오는게 모를때 사용한다
//Statement로 쓰는경우는 정확히 컬럼값이 주어져 있을때만 사용한다.
try{
conn = DBManager.getConnection();
pstmt = conn.prepareStatement(sql);//sql의 값을 넣어 연결한다.
//sql values에 ? 에 들어갈 순서 대로 BoardVO bVo로 받아온 값을 넣어준다.
pstmt.setString(1, bVo.getName()); //(순서, 파라메타 값);
pstmt.setString(2, bVo.getEmail());
pstmt.setString(3, bVo.getPass());
pstmt.setString(4, bVo.getTitle());
pstmt.setString(5, bVo.getContent());
pstmt.executeUpdate(); //SQL을 담은 PreparedStatement를 실행한다.
}catch(Exception e){
e.printStackTrace();
}finally{// try | catch가 끝나고 무조건 실행
DBManager.close(conn,pstmt);//DBManager에서 끌어다 사용한 Connection과 Statement를 종료한다.
}
}
//=======================================================================insertBoard END
//=======================================================================조회수 올리기
public void updateReadCount(String num){
String sql = "update boardtest1 set readcount = readcount+1 where num=?";
//readcount를 readcount+1로 해서 +1을 증가시킨다. 조건은 num의 값 지정한것만
Connection conn=null;
PreparedStatement pstmt =null;
try{
conn = DBManager.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, num);
pstmt.executeUpdate();
}catch(SQLException e){//SQL에서 일어날 예외상황 처리
e.printStackTrace();
}finally{
DBManager.close(conn, pstmt);
}
}
//=======================================================================updateReadCount End
//=======================================================================글 내용보기
//게시판 글 상세 내용 보기 : 글번호로 찾아온다. : 실패 null
public BoardVO selectOnBoardByNum(String num){
String sql = "select * from boardtest1 where num = ?"; //num의 값에 일치하는것의 모든 컬럼값 찾아오기
//초기화 시켜준다 (전역함수로 사용)
BoardVO bVo = null;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
//conn MySQL 연결
//pstmt SQL연결
//rs SQL저장
conn = DBManager.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, num);
rs = pstmt.executeQuery();
//실행 executeQuery는 select 찾을때 (sql쿼리로 값의 변동이 없을때) 사용
// executeUpdate는 insert into, update, delete ... 같이 쿼리로 값이 변동이 있을시 사용
if(rs.next()){
bVo = new BoardVO();
bVo.setNum(rs.getInt("num"));
bVo.setName(rs.getString("name"));
bVo.setPass(rs.getString("pass"));
bVo.setEmail(rs.getString("email"));
bVo.setTitle(rs.getString("title"));
bVo.setContent(rs.getString("content"));
bVo.setWritedate(rs.getTimestamp("writedate"));
bVo.setReadcount(rs.getInt("readcount"));
//저장되어있는 값을 보기만 하기 위해 .add(bVo)를 할 필요가 없다.
}
}catch(Exception e){e.printStackTrace();
}finally{
DBManager.close(conn, pstmt, rs);
}
return bVo; //bVo의 값을 전달하기 위해 bVo를 return
}
//=======================================================================selectOnBoardByNum End
//=======================================================================게시글 수정하기
public void updateBoard(BoardVO bVo){
String sql = "update boardtest1 set name=?, email=?, pass=?, title=?, content=? where num=?";
//업데이트(수정) 한다 name,email,pass,title,content를 (bVo로)받아온 값을 넣어 바꾼다.
//조건은 num의 값에 일치하는 것 만
Connection conn = null;
PreparedStatement pstmt = null;
try{
conn=DBManager.getConnection();
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, bVo.getName());
pstmt.setString(2, bVo.getEmail());
pstmt.setString(3, bVo.getPass());
pstmt.setString(4, bVo.getTitle());
pstmt.setString(5, bVo.getContent());
pstmt.setInt(6, bVo.getNum());
pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
DBManager.close(conn, pstmt);
}
}
//=======================================================================updateBoard END
//=======================================================================비밀번호 확인
//선택한 num값(게시글 번호)의 쿼리(pass)를 받아온것이 일치할때 BoardVO 값을 뿌린다.
public BoardVO checkPassword(String pass, String num){
String sql = "select * from boardtest1 where pass=? and num=?";
//모두 컬럼값을 찾는데 Password와 num이 일치하는것을 찾는다.
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
BoardVO bVo = null;
try{
conn = DBManager.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, pass);
pstmt.setString(2, num);
//checkPassword(인자String num)가 가져온 num이라서 String 이다.
rs = pstmt.executeQuery();//select 쿼리 실행한다.
if(rs.next()){//next 전체를 읽을때까지
bVo = new BoardVO();
bVo.setNum(rs.getInt("num"));
bVo.setName(rs.getString("name"));
bVo.setEmail(rs.getString("email"));
bVo.setPass(rs.getString("pass"));
bVo.setTitle(rs.getString("title"));
bVo.setContent(rs.getString("content"));
bVo.setReadcount(rs.getInt("readcount"));
bVo.setWritedate(rs.getTimestamp("writedate"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
DBManager.close(conn, pstmt, rs);
}
return bVo;//next로 읽어온 bVo값을 돌려준다.
}
//=======================================================================checkPassword END
//=======================================================================게시글 삭제
public void deleteBoard(String num){
String sql ="delete boardtest1 where num=?";
//delete 삭제한다 boardtest1 테이블을 조건은 num에 일치하는 값만
Connection conn=null;
PreparedStatement pstmt=null;
try{
conn = DBManager.getConnection();
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, num);
pstmt.executeUpdate();//DB의 값이 변동/삭제 되기 때문에 executeUpdate를 사용
}catch(Exception e){
e.printStackTrace();
}finally{
DBManager.close(conn, pstmt);
}
}
//=======================================================================deleteBoard END
}//class BoardDAO END
' JSP > 게시판 만들기' 카테고리의 다른 글
게시판 만들기 - JS 자바스크립트 (0) | 2016.06.16 |
---|---|
게시판 만들기 - VO (0) | 2016.06.15 |
게시판 만들기 - DBCP (0) | 2016.06.15 |
게시판 만들기 - DBManager (0) | 2016.06.15 |
게시판 만들기 - MySQL (0) | 2016.06.15 |