简体   繁体   English

使用servlet和jsp从SQL表中删除记录

[英]delete records from SQL table using servlet and jsp

I am stuck in my project. 我被困在我的项目中。 I have a list of students from where i can see the marks of each student, but when i try to delete a mark of a student, it doesn't work. 我有一个学生列表,从中可以看到每个学生的分数,但是当我尝试删除一个学生的分数时,它不起作用。

DAO Implementation: DAO实施:

public class ResultDaoImplementation implements ResultDAO {
    Connection connection = null;
    public ResultDaoImplementation() {
        connection= connectionWeb.getConnection();
    }

    @Override
             public List<Result> findbyId(long student_id){
            List<Result> results = new ArrayList <> ();
        Result result = null;
        ResultSet resultSet;
        PreparedStatement preparedStatement;
       try { preparedStatement= connection.prepareStatement ("SELECT * FROM  results where student_id=?");
        preparedStatement.setLong(1,student_id);
        resultSet = preparedStatement.executeQuery();
         while (resultSet.next()){
                result = new Result ();
       result.setStudent_id(resultSet.getLong("student_id"));
       result.setCourse_id(resultSet.getString("course_id"));
       result.setSemester(resultSet.getInt("semester"));
       result.setMarks(resultSet.getInt("marks"));
       result.setMark_id(resultSet.getString("mark_id"));
       results.add(result);}
       resultSet.close();
       preparedStatement.close();}
       catch (SQLException ex){
           ex.printStackTrace();
       }
       return results;   
}

     // Delete method
    public void delete(Result result){
        PreparedStatement preparedStatement;
        String sql="DELETE FROM results WHERE MARK_ID=? AND STUDENT_ID=?";
        try{
            preparedStatement= connection.prepareStatement(sql);
            preparedStatement.setString(1, result.getMark_id());
            preparedStatement.setLong(2, result.getStudent_id());
            preparedStatement.executeUpdate();
            preparedStatement.close();
        }
        catch (SQLException ex){
            ex.printStackTrace();

        }}

Controller: 控制器:

 protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String forward = "";

        String action = request.getParameter("action");
        try {

            if (action.equalsIgnoreCase("delete")) {
                String Rtid = request.getParameter("sid");
            long Rstdid = Long.parseLong(Rtid);
                String rdel = request.getParameter("rmarkid");
                Result results = new Result();
                results.setMark_id(rdel);
                results.setStudent_id(Rstdid);
                dao2.delete(results);
                forward = LIST;
                // forward new info in the list 
                request.setAttribute("listResult1", dao2.findbyId(Rstdid));

                request.getRequestDispatcher("/listResult.jsp").forward(request, response);
            }

JSP: JSP:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
     <title> List of Result </title>

        <table border="1">
            <thead>
                <tr>
                    <th>Student ID</th>
                    <th>Course ID</th>
                   <!-- <th>Course Name</th>-->
                    <th>Semester</th>
                    <th> Marks </th>
                    <th> Mark ID </th>
                   <th colspan=2> Action </th>
                </tr>
            </thead>
            <tbody>
            <c:forEach items="${listResult1}" var="results">
                <tr>
                <td><c:out value="${results.student_id}"/></td>
                <td><c:out value="${results.course_id}"/></td>
                <td><c:out value="${results.semester}"/></td>
                <td><c:out value="${results.marks}"/></td>
                 <td><c:out value="${results.mark_id}"/></td>
                <td> <a href="resultList?action=edit&sid&rmarkid=<c:out value="${results.student_id}"/>">Edit</a>
                <td> <a href="resultList?action=delete&rmarkid&sid=<c:out value="${results.mark_id}"/>">Delete</a>
                </tr>

            </c:forEach>
        </tbody>
        </table>
     <p> <a href="result.html"> Add new record </a> </p>
    </body>
</html>

I think the problem is the fact that i delete with 2 parameters and only use 1 parameter to forward in the list, or how i edit the action "delete" in my JSP 我认为问题是这样的事实,即我使用2个参数删除并且仅使用1个参数在列表中进行转发,或者我如何在JSP中编辑动作“删除”

You are passing rmarkid as empty and passing the wrong value for sid ! 您将rmarkid传递为空,并为sid传递了错误的值! More attention with you code. 与您的代码更多的关注。

This is what you are passing: 这就是您要传递的内容:

<td> <a href="resultList?action=delete&rmarkid&sid=<c:out value="${results.mark_id}"/>">Delete</a>

This is what you should pass: 这是您应该通过的:

<td> <a href="resultList?action=delete&rmarkid=<c:out value="${results.mark_id}"&sid=<c:out value="${results.student_id}"/>">Delete</a>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM