我正在使用servlet来删除sql上的行。我已经设置了一个文本字段,允许输入表的数量并将值传递给deleteHandler.java(servlet)进行检查和删除。我通过此消息遇到HTTP状态500
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Unknown Source)
java.lang.Integer.parseInt(Unknown Source)
addHandler.doPost(addHandler.java:47)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
似乎addHandler.doPost遇到了问题(在这种情况下,它返回null)
这是第46到47行的addHandler代码
int tableNo = Integer.parseInt(request.getParameter("tableNo"));
int paxNo = Integer.parseInt(request.getParameter("paxNo"));
delete.html表单提交给deleteHandler,后者处理删除表单中输入的表格数量。与add不同,delete.html只有1个输入,即tableNo,而add有一个额外的paxNo。问题是addHandler如何导致deleteHandler出错?
以下是我的deleteHandler
的代码//get parameter
int tableNo = Integer.parseInt(request.getParameter("tableNo"));
//connect to DB
Connection conn = null;
String db = "jdbc:mysql://localhost:3306/resto";
String db_driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "";
try {
Class.forName(db_driver);
conn = DriverManager.getConnection(db, user, pass);
//read
PreparedStatement stmt = conn.prepareStatement("delete from reserve where table_No = values(?)");
stmt.setInt(1, tableNo);
stmt.executeUpdate();
} catch (Exception e) {
}
以下是我的delete.html
的代码<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Delete table</title>
</head>
<body>
<form method="post" action="deleteHandler">
<label for="studentName">Table No.</label>
<input type="text" id="tableNo" name="tableNo"/>
<br/>
<input type="submit" />
</form>
</body>
</html>
与delete.html类似,这是add.html额外字段
<label for="studentID">pax amount:</label>
<input type="text" id="paxNo" name="paxNo"/>
这里似乎有什么问题?请帮我解决问题。非常感谢额外的解释。
编辑:提供的链接说它是因为输入文件不是数字而发生的,而在我的代码中,deleteHandler中没有输入该特定代码,即使我输入了一个数字,它仍会显示相同的错误。提供的链接没有解释为什么即使不需要输入值也会发生错误。