java - 需要java登录代码的帮助

标签 java authentication

我正在用 Java 编写一个小登录程序,但遇到了一个小问题:在检查用户名或密码是否与数据库中的条目匹配时,我使用 next() 迭代器,并且如果输入的数据与我的数据库中的数据不匹配,我希望它显示“用户名或密码不正确”。

问题是每次我测试它并尝试使用不正确的用户名或密码登录时,迭代器都会一一检查我的数据库条目,并在每次查询时显示“错误的用户名或密码”。我只是希望它在检查完数据库中的所有数据后立即显示消息。这是我的代码;我希望有人能帮助我...

try
{
    String un=username.getText();
    String pw=password.getText();  
    Connection conn = DriverManager.getConnection("jdbc:ucanaccess://C:\\Users\\JGUTX\\Documents\\UserDatabase.accdb"); 
    Statement s=conn.createStatement();
    ResultSet rs=s.executeQuery("SELECT UserName,Password,Administrator FROM UserDatabase"); 
    while(rs.next()){
    boolean type=rs.getBoolean("Administrator");
    String dbUser=rs.getString("UserName");
    String dbPass=rs.getString("Password");

    if(un.equals(dbUser)&& pw.equals(dbPass)){

        if(type==true){
        AdMenu admenu=new AdMenu();
        admenu.show();
        this.setVisible(false);       
        } else{

        Menu menu=new Menu();
        menu.show();
        this.setVisible(false); 
        }        
    }else{
       JOptionPane.showMessageDialog(null,"Ïncorrect username or password");
    }
    }
} 
catch (Exception e) 
{
    System.err.println("Got an exception!");
    System.err.println(e.getMessage());

   JOptionPane.showMessageDialog(null, "Error connecting to database...");
}    

最佳答案

试试这个:

    try
    {
        boolean accountMatches = false;
        String un=username.getText();
        String pw=password.getText();  
        Connection conn = DriverManager.getConnection("jdbc:ucanaccess://C:\\Users\\JGUTX\\Documents\\UserDatabase.accdb"); 
        Statement s=conn.createStatement();
        ResultSet rs=s.executeQuery("SELECT UserName,Password,Administrator FROM UserDatabase"); 
        while(rs.next()){
        boolean type=rs.getBoolean("Administrator");
        String dbUser=rs.getString("UserName");
        String dbPass=rs.getString("Password");

        if(un.equals(dbUser)&& pw.equals(dbPass)){
            accountMatches = true; 
            if(type==true){
            AdMenu admenu=new AdMenu();
            admenu.show();
            this.setVisible(false);       
            } else{

            Menu menu=new Menu();
            menu.show();
            this.setVisible(false); 
            }

        }
        if(accountMatches) break;

        }
    if(!accountMatches) JOptionPane.showMessageDialog(null,"Ïncorrect username or password");
    } 
    catch (Exception e) 
    {
        System.err.println("Got an exception!");
        System.err.println(e.getMessage());

       JOptionPane.showMessageDialog(null, "Error connecting to database...");
    }    

关于java - 需要java登录代码的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44572446/

相关文章:

PHP 登录访问在 Web 服务器中不起作用

java - Android 向 Pojo 类添加 json 数组

java - 如何处理复合模式中的添加、删除功能?

Java 覆盖错误

java - JSTL 无法打印对象列表

azure - 使用用户分配的托管标识连接到 Azure Databricks

java - 将数据从一个 Activity 传递到 ArrayList 项目单击上的另一个 Activity

Node.js SSL 身份验证

internet-explorer - IE 实际上并没有删除 cookie

如果计算机不在域中,则 c# Active Directory 身份验证用户