从jsp页面编辑数据库中的表

时间:2015-04-13 19:21:55

标签: jsp

我已经制作了editbooks.jsp页面。问题是它是在不更新表格的情况下将我重定向到admin.jsp页面。

更明确editbooks.jsp无效。

我的代码看起来很好,但我无法重新定位问题所在。

//editbooks.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ page import='java.io.*,java.sql.*' %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="editbooks.jsp">
<%
  if(request.getParameter("add")!=null)
   {
    try
    {
        String id=request.getParameter("id");

        String bname=request.getParameter("bname");
        String author=request.getParameter("author");
        String pub=request.getParameter("pub");
        String price=request.getParameter("price");
        String cat=request.getParameter("cat");
        String qty=request.getParameter("qty");
        String pic=request.getParameter("pic");

        Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost/bookstore?user=root&password=admin");

        String update="update books set bname=?,author=?,pub=?,price=?,cat=?,qty=?,pic=? where bid=?";

        PreparedStatement ps=con.prepareStatement(update);
        ps.setString(1, bname);
        ps.setString(2, author);
        ps.setString(3, pub);
        ps.setString(4, price);
        ps.setString(5, cat);
        ps.setString(6, qty);
        ps.setString(7, pic);
        ps.setString(8, id);

        ps.executeUpdate();

        response.sendRedirect("admin.jsp");
     }

    catch(Exception e)
    {
        out.println(e.getMessage());
    }
  }
%>
<table>
<tr>
<td><label>Book Name:</label></td>
<td><input type="text" name="bname" id="bname"/></td>
</tr>
<tr>
<td><label>Author:</label></td>
<td><input type="text" name="author" id="author"/></td>
</tr>
<tr>
<td><label>Publication:</label></td>
<td><input type="text" name="pub" id="pub"/></td>
</tr>
<tr>
<td><label>Price:</label></td>
<td><input type="text" name="price" id="price"/></td>
</tr>
<tr>
<td><label>Category:</label></td>
<td><input type="text" name="cat" id="cat"/></td>
</tr>

<tr>
<td><label>Quantity:</label></td>
<td><input type="text" name="qty" id="qty"/></td>
</tr>

<tr>
<td><label>Screenshot:</label></td>
<td><input type="file" name="pic" id="pic"/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="add" id="add" value="Update"/></td>
</tr>
</table>

</form>
</body>
</html>

我有另一个页面“admin.jsp”,我发送了值id

<td><a href="editbooks.jsp?id=<%= id %>">Edit</a></td>

当我点击编辑时,我得到了在网址上显示正确ID的editbooks.jsp页面 例如:http://localhost:8082/bookstore/editbooks.jsp?id=4

但仍无效。

1 个答案:

答案 0 :(得分:0)

您使用从请求参数获取的where bid=?更新数据库:

String id=request.getParameter("id");

但是你没有发送任何名为“id”的参数。因此,不满足sql语句,也没有更新记录。

我认为您已将您的ID存储在request scope中。如果是,那么您应该使用隐藏字段将值存储在表单中:

<input type="hidden" name="id" value="${id}" />

<强>更新

如果您将其作为参数发送到edit.jsp,则需要将其分配给隐藏字段以将值存储在表单中。然后它将作为参数传递到下一页:

 <input type="hidden" name="id" value="${param['id']}" />