Mysql ошибка на моем сайте JSP "Столбец" USER_NAME "не может быть пустым" - PullRequest
0 голосов
/ 16 мая 2019

Я не могу сделать раздел регистрации в моем проекте Jsp. Я получаю сообщение об ошибке «Столбец« USER_NAME »не может быть пустым». В коде много кода, я сожалею об этом, но сам не смог решить проблему. Не знаю, в чем проблема - в базе данных или в коде.

Я бы попробовал: Я переустановил Tomcat. Я создал новую базу данных, но опять та же ошибка.

Схема базы данных Mysql:

books_db
            -------------> book
            -------------> user_account
                                       ------> user_name, pk
                                       ------> password
                                       ------> gender

DButils.java

public static void register(Connection conn, UserAccount user) throws SQLException {
        String sql = "Insert into User_account(user_name, password,gender) values (?,?,?)";

        PreparedStatement pstm = conn.prepareStatement(sql);

        pstm.setString(1, user.getUserName());
        pstm.setString(2, user.getPassword());
        pstm.setString(3, user.getGender());

        pstm.executeUpdate();
    }

RegisterServlet.java

 protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        Connection conn = MyUtils.getStoredConnection(request);

        String userName = (String) request.getParameter("userName");
        String password = (String) request.getParameter("password");
        String gender = (String) request.getParameter("gender");
        UserAccount userreg = new UserAccount(userName, password, gender);
        String errorString = null;
        if (errorString == null) {
            try {
                DBUtils.register(conn, userreg);
            } catch (SQLException e) {
                e.printStackTrace();
                errorString = e.getMessage();
            }
        }
         request.setAttribute("errorString", errorString);
        request.setAttribute("userreg", userreg);
         if (errorString != null) {
            RequestDispatcher dispatcher = request.getServletContext()
                    .getRequestDispatcher("/WEB-INF/views/registerView.jsp");
            dispatcher.forward(request, response);
        }
        else {
            response.sendRedirect(request.getContextPath() + "/register");
        }

RegisterView.jsp

<form method="POST" action="${pageContext.request.contextPath}/register">
         <table border="0">
            <tr>
               <td>User Name</td>
               <td><input type="text" name="userName" value="${userreg.userName}" /></td>
            </tr>
            <tr>
               <td>Password</td>
               <td><input type="text" name="password" value="${userreg.password}" /></td>
            </tr>
            <tr>
               <td>Gender</td>
               <td><input type="text" name="gender" value="${userreg.gender}" /></td>
            </tr>
            <tr>
                        <td colspan="2">                   
                   <input type="submit" value="Submit" />
                   <a href="register">Cancel</a>

UserAccount.java

       public static final String GENDER_MALE ="M";
       public static final String GENDER_FEMALE = "F";

       private String userName;
       private String gender;
       private String password;


       public UserAccount(String userName, String password, String gender) {

       }

       public String getUserName() {
           return userName;
       }

       public void setUserName(String userName) {
           this.userName = userName;
       }
.
.
.

1 Ответ

2 голосов
/ 16 мая 2019

Возможно, потому что у вас есть параметр new UserAccount(userName, password, gender); в конструкторе, но никогда не set значения вашей переменной в классе, поэтому значение userName равно null, делайте, как показано ниже, то есть:

public UserAccount(String userName, String password, String gender) {
        this.userName = userName;//setting values in your class variable
       this.password= password;
       this.gender= gender;

       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...