Почему студент не удаляется по id (Java Servlet + MySQL) [закрыт]

275
01 ноября 2019, 15:00

Не могу удалить студента из Базы Данных по ID. Где я ошибся?

int id = request.getParameter("id"); здесь ругается

Мой сервлет:

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.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Добавлен</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1> Добавлнен в класс из " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //processRequest(request, response);
        PrintWriter out = response.getWriter();
        String name1 = request.getParameter("name");
        String surname1 = request.getParameter("surname");             
        String action = request.getParameter("actionname");
        if(action.equals("addstudent")){
            String name = request.getParameter("name");
            String surname = request.getParameter("surname");   
            try{
                insertstudent(name, surname);
            }catch(SQLException ex){                
            }
        }
        if(action.equals("RemoveStudent")){
            int id = request.getParameter("id");
            try{
                delete(id);
            }catch(SQLException ex){                
            }                
        }        
    }   
    public String insertstudent(String name, String surname) throws SQLException {
        String sql = "INSERT INTO student (name, surname) VALUES(?,?);";
        Connection con = null;
        PreparedStatement prep = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/school_db_newnew?useTimezone=true&serverTimezone=GMT", "root", "123456");
            prep = con.prepareStatement(sql);
            prep.setString(1, name);
            prep.setString(2, surname);
            prep.executeUpdate();
            prep.close();    
        } catch (ClassNotFoundException e) {    
            e.printStackTrace();    
        }
        return "successfully added";
    }
    public String delete(Integer id) throws SQLException {    
        String sql = "DELETE FROM student  WHERE id = '?';";
        Connection con = null;
        PreparedStatement prep = null;
        try {
            Class.forName("com.mysql.jdbc."
                    + "Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/school_db_newnew?useTimezone=true&serverTimezone=GMT", "root", "123456");
            prep.setInt(1, id);              
            prep.executeUpdate();
            prep.close();
            prep = con.prepareStatement(sql);    
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();    
        }
        return "successfully delete";
    }    
}

Мой JSP по удалению:

<%@page import="java.sql.*"%>
<% Class.forName("com.mysql.jdbc.Driver"); %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>    
<!DOCTYPE html>    
<head>   
    <meta charset="utf-8">
    <title>fSchool</title>      
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="css/RemoveStudent.css">
    <link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
    <link rel="stylesheet" href="css/menu.css">
    <script src="js/jquery1111.min.js" type="text/javascript"></script>
    <script src="js/script.js"></script>
</head>
<body class="home-page">
    <div class="wrap-body">
        <header>
            <div id="cssmenu" >
                <ul>
                   <li class="active"><a href="index.html"><span>FSchool</span></a></li>
                   <li class="has-sub"><a href="#"><span>Students</span></a>
                      <ul>
                                              <li class="has-sub"><a href="#"><span>Show All Students</span></a>
                            <ul>
                               <li><a href="#"><span>Add</span></a></li>
                               <li class="last"><a href="#"><span>Remove</span></a></li>
                            </ul>
                         </li>
                      </ul>
                   </li>
                   <li><a href="archive.html"><span>Media</span></a></li>
                   <li><a href="single.html"><span>Skills</span></a></li>
                   <li class="last"><a href="contact.html"><span>About</span></a></li>
                </ul>
            </div>
            </div>
            </table
     <div class="RemoveStudent">
         <h1>Remove Student</h1>
            <form action="MyServlet" method="Post">
            id : <input type="number" id="id"><br><br>                     
            <input type="hidden" value="RemoveStudent" name="actionname">
            <input type="submit" value="Send"><br>
        </form>
         </div>
</body>
</html>
Answer 1

исходя из документации

кусок кода вроде должен быть таким:

con = DriverManager.getConnection("jdbc:mysql://localhost:3306/school_db_newnew?useTimezone=true&serverTimezone=GMT", "root", "123456");
prep = con.prepareStatement(sql);
prep.setInt(1, id);
prep.executeUpdate();
prep.close();  
READ ALSO
Как улучшить свой код?

Как улучшить свой код?

Сейчас читаю Чистый код Мартина и стараюсь улучшить свой кодУ меня есть абстрактный класс Filter :

294
использование класса в разных проектах

использование класса в разных проектах

у меня два вопроса я создал класс G2d для своего удобства работы с графикой:

234
Что использовать для создания книги?

Что использовать для создания книги?

Нужно чтобы в левом меню DrawerNavigation отображались главы, а на экране текст с пролистыванием между экранами, как в обычных читалкахТакже нужна...

191
Как сделать бесшовный фон, в котором элементы зеркальны?

Как сделать бесшовный фон, в котором элементы зеркальны?

В стандартном бесшовном фоне элементы просто повторяются, для этого достаточно просто написать в css:

243