【发布时间】:2017-05-23 18:37:11
【问题描述】:
我的 servlet 遇到了关于从数据库中删除记录的问题。请查看我的 servlet 代码并纠正我。
ViewBooksServlet.java servlet 显示数据库中的记录以及每行中的“删除”超链接。但问题是每当我尝试按下删除按钮时.. elseif 循环运行并显示已从 DeleteBooksServlet.java servlet 中删除但数据并未从数据库中删除.. 请指导我如何从 id 中删除数据库中的记录或来自 book_name。
ViewBooksServlet.java
package books;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/viewbook")
public class ViewBooksServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out=response.getWriter();
Connection con=null;
try {
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/books_online","root","");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("Select * from books");
out.println("<html><table width='50' border='1'>");
out.println("<tr><td>Id</td><td>Name</td><td>Author</td><td>Price</td></tr>");
while(rs.next())
{
out.println("<tr><td>"+rs.getInt(1)+"</td><td>"+rs.getString(2)+"</td><td>"+rs.getString(3)+"</td><td>"+rs.getString(4)+"</td><td><a href='deletebook'>Delete</a></td></tr>");
}
out.write("</table></html>");
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
删除BooksServlet.java
package books;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/deletebook")
public class DeleteBooksServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out=response.getWriter();
Connection con=null;
try {
String id=request.getParameter("id");
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/books_online","root","root");
PreparedStatement ps=con.prepareStatement("delete from books where id=?");
ps.setString(1, id);
int i=ps.executeUpdate();
if(i!=0)
{
out.println("Deleting rows");
}
else if(i==0)
{
out.print("deleted");
}
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
【问题讨论】:
-
欢迎来到 Stack Overflow!在尝试提出更多问题之前,请阅读How do I ask a good question?。
-
欢迎来到 Stack Overflow!在尝试提出更多问题之前,请阅读Why is “Can someone help me?” not an actual question?。
-
使用调试器。看看你在
id变量中得到了什么。我怀疑你什么也得不到,因为你没有将参数传递给 servlet。
标签: java mysql database servlets