티스토리 뷰

하는 일 때문에 수정이 좀 늦었다.

수정된 내용들은 아래와 같다.

1. 지난번 버전의 SQL문을 사용시 ORA-00936: missing expression 에러 발생.

- 띄어쓰기를 제대로 안하고 괄호를 닫아주지 않아서 발생하였다... 눈이 침침했나보다...핳핳헿ㅎ헤

2. 동적쿼리 수정

- 지난번 버전에는 동적쿼리 함수인 dynamicSql()이 존재했고, boardList()함수에는 SQL문이 두개나 존재했었다.

   동적쿼리의 의미와 존재이유에 알맞지 않았기 때문에 수정했다. (하나의 SQL문장과 동적쿼리 담당 함수 하나로 해결)

   사용자가 검색조건 및 검색어 입력의 여부를 판단하여 그때에 알맞은 게시글 목록들을 갖고 올 수 있도록 수정했다.

   간단하게 말해서 fs변수(검색조건)가 null이면(덩달아 ss변수도 null일 경우도 포함했다ㅋㅋㅋ) 검색을 하지 않은 것으로 판

   단! null이 아닐경우 사용자가 검색조건과 검색어를 파라미터로 넘겨준 것이므로 검색한 것으로 판단!


package sjb.board.dao;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.ArrayList;


public class SJBoardDAO {

private Connection conn;

private PreparedStatement ps;

public static SJBoardDAO dao;

private final String URL="jdbc:oracle:thin:@localhost:1521:XE";

private final String DRIVER="oracle.jdbc.driver.OracleDriver";

private final String USER="hr";

private final String PWD="hr";

private String sql="";

public SJBoardDAO() {

//클래스 이름으로 오라클드라이버 메모리 할당(리플렉션)

try{

Class.forName(DRIVER);

}catch(Exception ex){

System.out.println("생성자 Exception발생 : "+ex.getMessage());

}

}

//객체생성시 null값 처리

public static SJBoardDAO newInstance(){

if(dao==null){

dao=new SJBoardDAO();

}return dao;

}

//오라클 연결

public void getConnection(){

try{

conn=DriverManager.getConnection(URL, USER, PWD);

}catch(Exception ex){

System.out.println("커넥션 Exception발생 : "+ex.getMessage());

}

}

//오라클 해제

public void disConnection(){

try{

if(ps!=null)ps.close();

if(conn!=null)conn.close();

}catch(Exception ex){

System.out.println("커넥션 해제 Exception발생 : "+ex.getMessage());

}

}


/*

* 게시판 조건검색 동적쿼리 생성

* param fs = 검색 조건

* param ss = 검색어

*/

public String dynamicSql(String fs, String ss){

//동적쿼리 변수

String dynamicQuery = "";

//검색을 하지 않을 경우

if(fs == null && ss == null){

dynamicQuery = "WHERE 0=0";

//검색을 할 경우

}else{

if(fs=="name"){

dynamicQuery = "WHERE name LIKE '%"+ss+"%' ";

}else if(fs=="subject"){

dynamicQuery = "WHERE subject LIKE '%"+ss+"%' ";

}else if(fs=="content"){

dynamicQuery = "WHERE content LIKE '%"+ss+"%' ";

}

}

return dynamicQuery;

}


//기능처리

/*

* 게시판 게시글 리스트 출력

* param page = 현재 페이지

* param fs   = 검색 조건

* param ss   = 검색어

*/

public ArrayList<SJBoardDTO> boardList(

int curPage, int start, int end, String fs, String ss

){

//게시글 리스트를 저장할 배열 boardList 선언

ArrayList<SJBoardDTO> boardList = new ArrayList<SJBoardDTO>();

//DB관련 작업

try{

//DB연결

getConnection();

//SQL문 작성

sql = "SELECT no,name,subject,regdate,readnum,step,ref,jump,valiDel,rownum " +

 "FROM " +

      "(SELECT A.*, rownum r " +

       "FROM (SELECT * " +

             "FROM jspboard " +dynamicSql(fs, ss)+

             "ORDER BY ref DESC, step ASC)A) " +

 "WHERE r>="+start+" AND r<="+end+"";

ps=conn.prepareStatement(sql);

ResultSet rs = ps.executeQuery();

int i=0;

int j=0;

int pageCount=(curPage*10)-10;

while(rs.next()){

if(j>=pageCount && i<10){

SJBoardDTO sjb_dto = new SJBoardDTO();

sjb_dto.setNo(rs.getInt(1));

sjb_dto.setName(rs.getString(2));

sjb_dto.setSubject(rs.getString(3));

sjb_dto.setRegdate(rs.getDate(4));

sjb_dto.setReadnum(rs.getInt(5));

sjb_dto.setStep(rs.getInt(6));

sjb_dto.setRef(rs.getInt(7));

sjb_dto.setJump(rs.getInt(8));

sjb_dto.setValiDel(rs.getString(9));

sjb_dto.setRownum(rs.getInt(10));

boardList.add(sjb_dto);

i++;

}j++;

}

rs.close();

}catch(Exception ex){

System.out.println("게시글 리스트 출력 Exception발생 : "+ex.getMessage());

}finally{

disConnection();

}

return boardList;

}

//게시글 총 갯수

public int getTotalBoardCount(){

int totalBoardCount = 0;

try{

getConnection();

sql = "SELECT COUNT(*) FROM jspBoard";

ps = conn.prepareStatement(sql);

ResultSet rs = ps.executeQuery();

rs.next();

totalBoardCount = rs.getInt(1);

rs.close();

}catch(Exception ex){

System.out.println("게시글 총 갯수 Exception 발생 : "+ex.getMessage());

}finally{

disConnection();

}

return totalBoardCount;

}

}

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함