try{
Connection conn = DriverManager.getConnection(url, ID, pw);
Statement stmt = conn.createStatement();
String TITLE = request.getParameter("title");
String sql = "select title, hire, sex, area, week, time1, time2, special, language, money, renew from user_personal where title= ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, TITLE);
ResultSet rs = stmt.executeQuery(sql);
if(rs.next()){
String title = rs.getString(1);
String hire = rs.getString(2);
String sex = rs.getString(3);
String area = rs.getString(4);
String week = rs.getString(5);
String time1 = rs.getString(6);
String time2 = rs.getString(7);
String special = rs.getString(8);
String language = rs.getString(9);
String money = rs.getString(10);
String renew = rs.getString(11);
%>

리스트 페이지에서 제목을 누르면 읽기페이지가 나오는 겁니다.
위에 소스는 읽기페이지 소스인데
제목을 누르면 나와야해서 where title= ? 을 해줬는데
읽기페이지가면 아무것도 나오지 않습니다.
문제가 뭔지 알려주세요!!



답변 드립니다.


보통 게시판 같은 경우에는 글번호도 추가로 만들어 줍니다.
그 이유는 보다 빠르고 정확하게 글 읽기 시 DB를 조회할 수 있기 때문입니다.

글번호같은 경우엔 순차적으로 올라가기 때문에 중복되는 경우도 없고 숫자형 데이터 이기 때문에 쿼리 검색도 빠르죠.

질문자님께서 말씀하신 것과 같이 title를 글읽기의 검색 조건(where)로 사용하게 되면 몇가지 문제가 생기는데요.

예를 들어 제목이 중복되었을 경우 한개의 데이터만 넘어오지 않기 때문에 문제가 될 수 있고,
또한 DB에 문자형 데이터가 저장될 때 DB마다 규칙이 조금씩 다르기 때문에 실제 넘긴 데이터랑 비교하기 애매한 부분이 있습니다.
띄어 쓰기 같은 경우 어떻게 저장되는지 특수문자 등은 어떻게 되는지 한글 설정은 어떻게, 몇바이트로 되었는지 등 변수가 있을 수 있죠.

때문에 앞서 말씀드린 것과 같이 DB에 글번호 컬럼을 하나 더 추가하셔서 하시는 것을 추천드립니다.

만약 위와 같이 해야한다면 우선 DB에 저장된 데이터 형태를 확인 후 jsp에서 쿼리를 날리기전에 title이 어떤 형태로 보내는지를 비교 하셔서 그에 맞게 가공을 해 주셔야 합니다.

그럼 즐코 되세요.


+ Recent posts