Java 使用count登录桌面应用程序

Java 使用count登录桌面应用程序,java,mysql,swing,jdbc,Java,Mysql,Swing,Jdbc,当用户验证为“Admin”或“user”时,我试图调用一个页面,但似乎出现了问题 private void validateLogin() { if (getFieldData() == true) { username = txtname.getText(); String password = new String(txtpassword.getPassword()); Object type = cbType.getSelectedI

当用户验证为“Admin”或“user”时,我试图调用一个页面,但似乎出现了问题

private void validateLogin() {
    if (getFieldData() == true) {
        username = txtname.getText();
        String password = new String(txtpassword.getPassword());
        Object type = cbType.getSelectedItem();
        //validate login and password here. 
        //validity will be done by sending login/password to the database
        String sql = "select  count(*) from usermanagement where UserName='" 
                + username + "' and " + "Password='" + password + "'";
        ResultSet rs = datacon.queryTable(sql);
        try {
            rs.next();
            if (rs.getInt(1) > 0) {
                if (type.equals("Admin")) {
                    MainMenu mainmenu = new MainMenu();
                    this.dispose();
                    mainmenu.setVisible(true);
                } else {
                    UserMenu usermenu = new UserMenu();
                    this.dispose();
                    usermenu.setVisible(true);
                }
            } else {
                JOptionPane.showMessageDialog(this, 
                        "Incorrect username or password or user category", 
                        "Error", JOptionPane.ERROR_MESSAGE);
                clearField();
                txtname.requestFocusInWindow();
                cbType.setSelectedIndex(0);
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

我在这里没有看到您的输入、用户名和密码。最好附加日志,以了解异常状态对问题的影响

根据我在代码中看到的,这里是我的建议

  • 您应该避免在您的sql上使用此
    UserName='“+UserName+”
    ,因为特殊字符可能会破坏您的sql。我建议你坚持一些类似于预先准备好的声明

  • 最好遵循
    if(rs.next())
    检查记录是否存在。访问
    rs.getInt(1)
    是不安全的,如果您没有任何匹配的记录,它可能会破坏您的应用程序


问题出在哪里?1)要更快获得更好的帮助,请发布一个。2) 请对代码、输入/输出和结构化文档(如HTML或XML)使用代码格式。为此,请选择示例并单击消息发布/编辑表单上方的
{}
按钮。3) “这里似乎有问题…”什么问题?问题是什么?在我根据数据库输入验证后,即用户类别“Admin”或“User”用户名“timo”和密码“timo123”,它不会调用下一页,即主菜单或用户菜单,,,myt在'rs.next()'和'if(rs.getInt(1)>0)'thnks@Macon上的声明可能是错误的,当它带来错误时,username选项卡会给出用户在数据库中的编号,例如timo是编号3。。。我的每个用户都有一个Id…这就是为什么我使用rs.getInt(1)让我试试你在UserName='“+UserName+'”..@reggea上的建议。我建议你使用if(rs.next()&&&(rs.getInt(1)>0))@Macon ts这样的东西,仍然会给出相同的错误,thnks bdw而不是使用UserName='“+UserName+'”dyu建议我使用的,,引用用户名textbox@reggea请分享例外stacktrace@Macon它真正带来的是“不正确的用户名或密码或用户类别”,“错误”作为错误,它既没有给出我指定的任何异常,,,认为“if(rs.getInt(1)>0)”是导致调用MainMenu或UserMenu时出错的原因