위로
아래
DAO에 메소드 추가
글 목록에서 제목을 누르면 글 내용 페이지가 나올 것이다.
글 목록에 있는 데이터 중 bno를 이용해, 해당 bno의 다른 데이터를 불러오는 방식을 취하겠다.
필요한 인자는 bno이고, 반환할 데이터는 subject, writer, content, passwd 등 여럿이니,
파라미터는 int bno로, 반환은 DTO로 한다.
한 게시글의 정보만 받아오면 되니 배열은 필요 없다.
public BoardDTO getArticle(int bno) {
...
return dto;
}
getArticle() 메소드 기본형
public BoardDTO getArticle(int bno) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
BoardDTO dto = new BoardDTO();
try {
String sql = " ... ";
conn = DBConnectionManager.getInstance().getConnection();
pstmt = conn.prepareStatement(sql);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn != null) conn.close();
if(pstmt != null) pstmt.close();
if(rs != null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return dto;
}
SELECT 쿼리문
해당 bno일 때 모든 행을 조회하면 된다.
String sql = "SELECT bno, bref, bstep, blevel, readcount, "
+ "subject, content, writer, regdate, ip, passwd "
+ "FROM board WHERE bno = ?";
?에는 해당 게시글의 bno를 넣어주면 된다.
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, bno);
getArticle 메소드
public BoardDTO getArticle(int bno) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
int r = 0;
BoardDTO dto = new BoardDTO();
try {
String sql = "SELECT bno, bref, bstep, blevel, readcount, "
+ "subject, content, writer, regdate, ip, passwd "
+ "FROM board WHERE bno = ?";
conn = DBConnectionManager.getInstance().getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, bno);
rs = pstmt.executeQuery();
if(rs.next()) {
dto.setBno(rs.getInt("bno"));
dto.setBref(rs.getInt("bref"));
dto.setBstep(rs.getInt("bstep"));
dto.setBlevel(rs.getInt("blevel"));
dto.setReadcount(rs.getInt("readcount"));
dto.setSubject(rs.getString("subject"));
dto.setWriter(rs.getString("writer"));
dto.setContent(rs.getString("content"));
dto.setRegdate(rs.getString("regdate"));
dto.setIp(rs.getString("ip"));
dto.setPasswd(rs.getString("passwd"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn != null) conn.close();
if(pstmt != null) pstmt.close();
if(rs != null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return dto;
}
전체 코드
더보기
package bean;
import java.sql.*;
import java.util.*;
public class BoardDAO {
private static BoardDAO dao = null;
private BoardDAO () {};
public static BoardDAO getInstance(){
if(dao==null)
dao = new BoardDAO();
return dao;
}
public int BoardWrite (BoardDTO dto) {
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
int r = 0;
conn = DBConnectionManager.getInstance().getConnection();
try {
int newBno = 0;
String sql = "SELECT IFNULL(MAX(bno),0)+1 AS bno FROM board";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next())
newBno = rs.getInt("bno");
pstmt.close();
rs.close();
sql = "INSERT INTO board "
+ "(bno, bref, bstep, blevel, "
+ "subject, content, writer, regdate, "
+ "ip, passwd, readcount) "
+ "VALUES(?,?,?,?,?,?,?,SYSDATE(),?,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, newBno);
pstmt.setInt(2, newBno);
pstmt.setInt(3, dto.getBstep());
pstmt.setInt(4, dto.getBlevel());
pstmt.setString(5, dto.getSubject());
pstmt.setString(6, dto.getContent());
pstmt.setString(7, dto.getWriter());
pstmt.setString(8, dto.getIp());
pstmt.setString(9, dto.getPasswd());
pstmt.setInt(10, dto.getReadcount());
r = pstmt.executeUpdate();
} catch(SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn!=null) conn.close();
if(pstmt!=null) pstmt.close();
if(rs!=null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return r;
}
public List<BoardDTO> getArticles() {
List<BoardDTO> articles = new ArrayList<>();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
String sql = "SELECT ROW_NUMBER() "
+ "OVER(ORDER BY bref DESC, bno, bstep) AS rn, "
+ "bno, bref, bstep, blevel, readcount, "
+ "subject, content, writer, regdate, ip, passwd "
+ "FROM board";
conn = DBConnectionManager.getInstance().getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) {
BoardDTO dto = new BoardDTO();
dto.setBno(rs.getInt("bno"));
dto.setBref(rs.getInt("bref"));
dto.setBstep(rs.getInt("bstep"));
dto.setBlevel(rs.getInt("blevel"));
dto.setReadcount(rs.getInt("readcount"));
dto.setSubject(rs.getString("subject"));
dto.setWriter(rs.getString("writer"));
dto.setRegdate(rs.getString("regdate"));
dto.setIp(rs.getString("ip"));
dto.setPasswd(rs.getString("passwd"));
articles.add(dto);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn != null) conn.close();
if(pstmt != null) pstmt.close();
if(rs != null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return articles;
}
public BoardDTO getArticle(int bno) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
int r = 0;
BoardDTO dto = new BoardDTO();
try {
String sql = "SELECT bno, bref, bstep, blevel, readcount, "
+ "subject, content, writer, regdate, ip, passwd "
+ "FROM board WHERE bno = ?";
conn = DBConnectionManager.getInstance().getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, bno);
rs = pstmt.executeQuery();
if(rs.next()) {
dto.setBno(rs.getInt("bno"));
dto.setBref(rs.getInt("bref"));
dto.setBstep(rs.getInt("bstep"));
dto.setBlevel(rs.getInt("blevel"));
dto.setReadcount(rs.getInt("readcount"));
dto.setSubject(rs.getString("subject"));
dto.setWriter(rs.getString("writer"));
dto.setContent(rs.getString("content"));
dto.setRegdate(rs.getString("regdate"));
dto.setIp(rs.getString("ip"));
dto.setPasswd(rs.getString("passwd"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn != null) conn.close();
if(pstmt != null) pstmt.close();
if(rs != null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return dto;
}
}