Java JSP Mysql错误
我有一个简单的网页,当有人预订房间时,他可以删除预订。 我在数据库中有一个名为:hotel_booking的模式,该值为: id主键CID、idresid、Stringcname、Stringemail、Stringarrival\u date、StringDeviation\u date、intperson、Introm、Stringtype\u room、Textcomment、intstatus 我有以下代码:Java JSP Mysql错误,java,mysql,database,jsp,Java,Mysql,Database,Jsp,我有一个简单的网页,当有人预订房间时,他可以删除预订。 我在数据库中有一个名为:hotel_booking的模式,该值为: id主键CID、idresid、Stringcname、Stringemail、Stringarrival\u date、StringDeviation\u date、intperson、Introm、Stringtype\u room、Textcomment、intstatus 我有以下代码: <%@page contentType="text/html" page
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import ="java.sql.*" %>
<%
String id = request.getParameter("resid");
int dlt=0;
if (dlt!=0)
dlt =Integer.parseInt(id);
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/HotelReservation","root" ,"123456789");
Statement st = con.createStatement();;
int i = st.executeUpdate("delete from hotel_booking where resid=" +dlt+"");
if (i != 0) {
response.sendRedirect("home.jsp");
} else {
out.print("Data not deleted successfully");
}
%>
用于cancel.jsp页面
这是booked.jsp的代码
<%--
Document : index
Created on : Feb 27, 2015, 7:39:57 PM
Author : OOPs
--%>
<%@ page import="java.sql.*" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="home.css">
<title>JSP Page</title>
<link href="responsiveslides.css" rel="stylesheet" type="text/css"/>
<link href="themes.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="responsiveslides.min.js" type="text/javascript"></script>
</head>
<body>
<h1>your booked detail</h1>
<%
try{
String n=(String)session.getAttribute("sessname");
// out.print("Hello "+n);
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");
ResultSet rs = st.executeQuery("select * from hotel_booking where uid = "+n);
%>
<% while(rs.next())
{
int id = rs.getInt("cid");
int res = rs.getInt("resid");
// out.println(id);
String cname = rs.getString("cname");
// out.println(cname);
String email = rs.getString("email");
String arrival = rs.getString("arrival_date");
String departure = rs.getString("departure_date");
int person = rs.getInt("person");
int room = rs.getInt("room");
String type_room = rs.getString("type_room");
%>
<div class="hotel-block" style="background-color: #5882FA;padding: 2px 15px 30px;margin-top: -20px; width: 102%; margin-left: -23px;">
...........................................................................................................................................................................................................................................................................................
<h2 class="heading"><label style=" margin-left: 150px; margin-top: 151px;">Name :</label><span style=" margin-left: 200px;"><%out.println(cname);%></h2>
<h2 class="heading"><label style="margin-left: 150px;">Email :</label><span style=" margin-left: 200px;"><%out.println(email);%></span></h3>
<h2 class="heading"><label style="margin-left: 150px;">arrival date :</label><span style=" margin-left: 100px;"><%out.println(arrival);%></h2>
<h2 class="heading"><label style="margin-left: 150px;">departure date:</label><span style=" margin-left: 50px;"><%out.println(departure);%></h2>
<h2 class="heading"><label style="margin-left: 150px;">no. of person :</label><span style=" margin-left: 70px;"><%out.println(person);%></h2>
<h2 class="heading"><label style="margin-left: 150px;">no. of room :</label><span style=" margin-left: 100px;"><%out.println(room);%></h2>
<h2 class="heading"><label style="margin-left: 150px;">type room:</label><span style=" margin-left: 100px;"><%out.println(type_room);%></h2>
<form action='cancel.jsp'>
<input type='submit' name='cancel' value='Cancel Reservation'>
<input type="hidden" name="res" value=<%= res %>>
</form>
</div>
<% } }
catch(Exception e)
{
}
out.close();
%>
</body>
</html>
如果我试图取消预订,我会出现以下错误:
HTTP Status 500 – Internal Server Error
Type Exception Report
Message An exception occurred processing [/cancel.jsp] at line [8]
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.apache.jasper.JasperException: An exception occurred processing [/cancel.jsp] at line [8]
5: <%
6: String id = request.getParameter("resid");
7: int dlt;
8: dlt =Integer.parseInt(id);
9:
10:
11:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:593)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:482)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:542)
java.lang.Integer.parseInt(Integer.java:615)
org.apache.jsp.cancel_jsp._jspService(cancel_jsp.java:125)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:444)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note The full stack trace of the root cause is available in the server logs.
我怎样才能解决这个问题?谢谢你的帮助 您向服务器发送的具体请求是什么?它应该附加一个resid,例如?resid= 看起来request.getParameterresid在下面的行中返回null
String id = request.getParameter("resid");
旁注:您在查询中添加参数的方式,使您的代码容易受到SQL注入攻击!考虑使用PravaRealSt.< /P> < P>您的问题是,您已经定义了一个名为RES的隐藏字段,但正在将其作为渣打访问。更改字符串id=request.getParameterresid;to String id=request.getParameters;它应该会起作用
正如Sazzadur Rahaman提到的:永远不要以这种方式附加参数。使用PreparedStatement,因为错误表明您从未给它参数id,因此它无法将不存在的值转换为整数。您认为我该怎么办?我应该删除字符串id吗?由于异常是numberformat,核心问题是,参数resid被传递为null,最终无法转换为int。请尝试检查传递的参数。是的,我应该用preparedStatement实现cose!无论如何,在我的web应用程序中,当有人在hotel\u booking中自动预订房间时,值resid是递增的,它是一个整数值。用户当然也会插入所有数据。现在我想创建一个底部来删除所有行,将隐藏字段更改为resid;浏览器显示我>未成功删除的数据