【问题标题】:Compare element in SQL ( Room Reservation WebApp) Java比较 SQL(Room Reservation WebApp)Java 中的元素
【发布时间】:2018-12-21 00:16:15
【问题描述】:

我创建了一个简单的 Web 应用程序。 我需要检查,当有人预订房间时,arrival_date 是否不同。 例如: A 人:在数据中预订房间:12/07/2018 人 B:在数据中预订房间:12/07/2018(他不能,因为还有人 A)。

我有这个数据库:

酒店预订

cid、cname、email、arrival_date、department_date、person、room、type_room、comment、status、uid。

这是我的代码

HotelBooking.java

package hotel;


import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


/**
 *
 * @author OOPs
 */
public class Hotelbooking extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String s1 = request.getParameter("id");
        String s2 = request.getParameter("name");
           String s3 = request.getParameter("email");
           String s4 = request.getParameter("arrivaldate");
           String s5 = request.getParameter("departuredate");
           String s6 = request.getParameter("person");
           String s7 = request.getParameter("rooms");
           String s8 = request.getParameter("type_room");
           String s9 = request.getParameter("comment");
           String s10 = request.getParameter("status");
           
           // sesson..........
           HttpSession session=request.getSession(true);
          String s11 = (String)session.getAttribute("sessname");

       out.println(s11);
             
         
   
          
       try {
           
           
            Class.forName("com.mysql.jdbc.Driver");
      //  out.println("driver loaded");
     Connection  con = DriverManager.getConnection("jdbc:mysql://localhost:3306/HotelReservation","root" ,"123456789");
      //  out.println("Connect");
      Statement  st =  con.createStatement();
        //  out.println("conncetion successfull");
     
       
       int rs =  st.executeUpdate("insert into hotel_booking (cname,email,arrival_date,departure_date,person,room,type_room,comment,status,uid)values ('"+s2+"','"+s3+"','"+s4+"','"+s5+"','"+s6+"','"+s7+"','"+s8+"','"+s9+"','"+s10+"','"+s11+"')");
         // out.println(s1);
         // out.println(s2);
          out.println("<h1> Register sucsefulltttt </h1>");
           
          /* if(rs == 1)
           {
           out.println("<script type=\"text/javascript\">");
       out.println("alert('send successfully');");
       out.println("</script>");
       //response.sendRedirect("home.jsp");
           }else{
       
       
       }*/
           
          response.sendRedirect("thankyoureg.jsp"); 
           
           
           
        }catch(Exception e){
        out.println("nahiiiiiiiiiiiii" +e);
        }
        finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

在你看来我该怎么做?感谢您的帮助。

【问题讨论】:

  • 通过编写代码... Stackoverflow 用于询问特定 编程问题或错误,而不是用于粘贴您的项目的一部分并要求其他人编写您的代码(参见@987654321 @)。因此,我投票结束这个问题过于广泛。
  • 我问怎么办,我不问你写代码。我只想明白。我粘贴我的代码以查看我使用的变量...

标签: java mysql sql eclipse


【解决方案1】:

检查如下查询是否返回0

SELECT count(*)
       FROM hotel_booking
       WHERE arrival_date <= $1
             AND departure_date > $1,
             AND room = $2;

如果它返回0,则在客人希望入住的那一天房间没有被占用。否则它是。

$1 替换为客人希望到达的日期,将$2 替换为房间(号码或名称或您使用的任何名称)。

我假设入住/退房时间的处理方式如下:

  • 在指定日期的晚上签到。
  • 在指定日期的早上退房。这意味着客人可以在另一位客人退房的一天登记入住。

如果该假设是错误的,则必须相应地调整比较运算符。

还可以考虑使用参数化查询,而不是使用未经处理的用户输入值进行字符串连接。后者很危险,您的应用程序容易受到 SQL 注入攻击。此外,参数化查询有助于找到给定数据类型的正确表示,从而防止来自错误表示的值的错误。

【讨论】:

  • 感谢您的回答!我想到了与您的答案类似的东西,问题是我不知道某个用户的到达日期。当他输入日期时,将是他,以查看该日期的房间已被占用。我不明白执行此操作需要使用什么参数。
  • @Keyz23:我猜你在arrival_date 中使用的相同INSERT...
猜你喜欢
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
  • 2021-12-10
相关资源
最近更新 更多