servlet중첩 쿼리문 질문이요 500에러가 나요 ㅠㅠㅠㅠ

조회수 36회

호텔예약관리 프로젝트를 하고 있는데요. 특정기간에 예약이 잡혀있는 방들을 제외하고 예약가능한 방만 표시하는 쿼리문을 만들었는데 실행하면 selectP22?checkin1=2020-11-18&checkout1=2020-11-18&roomtype=SweetRoom:1 Failed to load resource: the server responded with a status of 500 (Internal Server Error) 에러가 나네요. 간단한 sql문일때는 이 오류가 안나는데 밑의 sql문으로 시도하면 에러가 납니다. 이걸 어떻게 수정해야 할까여 .. 잘 몰라서 질문드립니다.

request.setCharacterEncoding("utf-8");
         response.setContentType("text/html; charset=utf-8");
         String checkin1 = request.getParameter("checkin1");
         System.out.println(checkin1);
         String checkout1 = request.getParameter("checkout1");
         System.out.println(checkout1);
         String roomtype = request.getParameter("roomtype");
         System.out.println(roomtype);
         url="jdbc:oracle:thin:@localhost:1521:orcl";
         userid="";//가림
         passwd=""; //가림
         Connection conn=null;
         PreparedStatement stmt=null;
         ResultSet rs=null;
         PrintWriter out=response.getWriter();
         try {
             String sql="select * from roommanage where room_id not in "
                    + "(select room_id from bookmanage where (check_indate>TO_DATE(?) and check_indate<TO_DATE(?) or "
                    + "(check_outdate >TO_DATE(?) and check_outdate<TO_DATE(?)))) and room_type like ?;";
             Class.forName("oracle.jdbc.driver.OracleDriver");
             conn = DriverManager.getConnection(url,userid,passwd);
             stmt=conn.prepareStatement(sql);
             System.out.println(sql);
             stmt.setString(1, checkin1);
             stmt.setString(2, checkout1);
             stmt.setString(3, checkin1);
             stmt.setString(4, checkout1);
             stmt.setString(5, roomtype);
             rs=stmt.executeQuery();
             JSONArray ja = new JSONArray();
             while(rs.next()) {
                 JSONObject jo =new JSONObject();
                 jo.put("roomid",rs.getString("ROOM_ID"));
                 jo.put("roomname",rs.getString("ROOM_NAME"));
                 jo.put("roomtype",rs.getString("ROOM_TYPE"));
                 jo.put("howmuch",rs.getInt("HOWMUCH"));
                 jo.put("howmany",rs.getInt("HOWMANY"));
                 ja.add(jo);
             }
             out.println(ja.toString());
             out.close();

          } catch(Exception e) {
             out.println("error");
          } finally {
                try {
                conn.close();
                stmt.close();
                rs.close();
             } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
             }
             }

1 답변

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.