JDBC тот же результат, даже если изменение устава - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь проверить, существует ли имя пользователя в базе данных, но всякий раз, когда я пытаюсь выполнить запрос выбора, выдается сообщение об ошибке:

При сохранении информации возникает ошибка: com.mysql.jdbc. exceptions.jdbc4.MySQLSyntaxErrorException: у вас есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, для правильного синтаксиса, чтобы использовать рядом с 'user, где username =' sf '' в строке 1

Даже если я изменяю запрос, он возвращает ту же ошибку.

Ниже приведен код, который я использую

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

    response.setContentType("text/html");
    PrintWriter write=response.getWriter();
    String mobile=null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/users","root","");
        PreparedStatement p=con.prepareStatement("Insert into user values(?,?,?,?,?)");
        Statement stmt=con.createStatement();

        String name=request.getParameter("name");
         mobile=request.getParameter("mobile");
        String email=request.getParameter("email");
        String password=request.getParameter("pass");
        String username=request.getParameter("username");
        PreparedStatement temp=con.prepareStatement("Select * from user where username= ?");
        temp.setString(1, username);
        ResultSet rs=temp.executeQuery();
        if(rs.next())
        {
            write.println("<p>Username already exist in the record.Please change the username or go to login Page</p><br><p>Click the Link below to go to Login Page</p>");
            write.println("<a href=\"index.html\" >Click here</a>");
        }
        else
        {
        p.setString(1,name);
        p.setLong(2, Long.parseLong(mobile));
        p.setString(3, username);
        p.setString(4, password);
        p.setString(5,email);
        p.executeUpdate();
        write.println("<p>Entry was sucessful.Your details were sucessfully stored from the database.Please go to the main page and login</p>");
    write.println("<p>Click on the below link to go back to main page</p>");
    write.println("<a href=\"index.html\" >Click here</a>");
        }
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        write.println("An Error occured while storing information:"+e);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        write.println("An Error occured while storing information:"+e);

}
    catch (Exception e) {
        // TODO Auto-generated catch block
        write.println("An Error occured while storing information:"+e+":"+mobile);

}
}

}

Вывод должен содержать детали, если пользователь уже существует или нет. Но это всегда дает мне ошибку

1 Ответ

0 голосов
/ 04 ноября 2019

USER - функция, и при определенных обстоятельствах имена функций считаются зарезервированными словами;что, кажется, имеет место здесь.

SELECT * FROM `user` WHERE ...

Стандартный SQL будет использовать "user", но для этого может потребоваться настройка.

(Также может быть проще использовать множественное число для таблиц, users.)

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