-4
自分のサーブレットでデータベースからレコードを削除する際に問題が発生しました。私のサーブレットコードを見て、私を修正してください。サーブレットを使用してデータベースから行を削除
ViewBookServlet.javaサーブレットは、レコードをすべての行の「削除」ハイパーリンクとともにデータベースに表示します。しかし問題は、私がdeleteボタンを押すたびにです.. elseifループが実行され、DeleteBooksServlet.javaサーブレットから削除されたことが示されますが、データはデータベースから削除されません。どのように私はdatabseからレコードを削除できますかまたは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();
}
}
}
DeleteBooksServlet.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();
}
}
}
ようこそ!より多くの質問をする前に、[どうすれば良い質問をしますか?](http://stackoverflow.com/help/how-to-ask)をお読みください。 –
ようこそスタックオーバーフロー! [なぜ誰かが私を助けることができますか?実際の質問ではないのはなぜですか?](https://meta.stackoverflow.com/questions/284236/why-is-can-someone-help-me-not-an-actual質問)より多くの質問をしようとする前に。 –
デバッガを使用します。あなたが 'id'変数で得たものを見てください。サーブレットにパラメータを渡していないので、何も得られないと思う。 – RealSkeptic