Java检查用户名是否已经存在

问题描述 投票:0回答:1

我想在我的servlet项目中制作一个注册页面。

如果用户名已经被占用,我想显示一个错误信息。

这是我的代码。

        String uname=request.getParameter("uname");
        String pass=request.getParameter("pass");
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection con= (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/covid","root","fbfbfb333*");

                String query = "SELECT * FROM users WHERE username = ?";
                pstmt = (PreparedStatement) con.prepareStatement(query);
                pstmt.setString(1, uname);
                 rs = pstmt.executeQuery();

                    if(rs.next()) {
                        PreparedStatement pst = (PreparedStatement) con.prepareStatement(" insert into users(username,password) values(?,?)");
                         pst.setString(1, uname);
                         pst.setString(2, pass);
                         pst.executeUpdate();
                         response.sendRedirect("login.jsp"); 
                }  else {
                        System.out.println("Username " + uname + " already exists.");
                }



        } catch (Exception e) {
            e.printStackTrace();
        }

但是当我添加一个新的用户时,无论它是否存在,它都会显示 "用户名已经被占用"。

我应该怎么做?

java servlets
1个回答
1
投票

切换条件,如果有一个结果集数据意味着用户名已经被占用,否则插入新的用户名。

    if(rs.next()) {
        System.out.println("Username " + uname + " already exists.");
    }  else {
        PreparedStatement pst = (PreparedStatement) con.prepareStatement(" insert into users(username,password) values(?,?)");
         pst.setString(1, uname);
         pst.setString(2, pass);
         pst.executeUpdate();
         response.sendRedirect("login.jsp"); 
    }
© www.soinside.com 2019 - 2024. All rights reserved.