【问题标题】:How to read value from mysql database based on condition?如何根据条件从mysql数据库中读取值?
【发布时间】:2020-11-26 22:28:09
【问题描述】:

我正在做一个 Java 项目,以允许用户根据他们从创建帐户中选择的内容以管理员或用户身份登录。我设法通过检查数据库中是否存在这些值来检查他们的用户名和密码在我的应用程序登录页面中是否正确,但是,我希望用户以管理员或用户身份登录,但我没有不知道该怎么做。我想如果我可以从他们在数据库中创建的帐户中读取他们选择的内容(用户或管理员)(请参阅下面的数据库列图片),那么我可以基于此执行 if 语句。例如 if(usertype == 'admin'){ // then go to admin page} 但是 usertype 是数据库中的一列,我不知道如何阅读。我下面还有我的代码,它是激活的函数每当按下登录按钮时。如果您知道解决方案,请告诉我,谢谢。

private void LoginButtonActionPerformed(java.awt.event.ActionEvent evt) {
    Connection con;
    PreparedStatement pst;
    ResultSet rs;                                            
        try{
            String query = "SELECT * FROM `accounts` WHERE username=? and password=?"; // and usertype=?
            con = DriverManager.getConnection("jdbc:mysql://localhost/restock", "root", "password");
            pst = con.prepareStatement(query);
            pst.setString(1, txtUsername.getText());
            pst.setString(2, txtPassword.getText());
            rs = pst.executeQuery();
            if(rs.next()){
                
                JOptionPane.showMessageDialog(this, "Login is successful as admin");
                mainpage admin = new mainpage();
                admin.setVisible(true);
                dispose();
            }
            else{
                JOptionPane.showMessageDialog(this, "Incorrect username or password");
                /*usermainpage user = new usermainpage();
                user.setVisible(true);
                dispose();*/
            }
            
        } catch(Exception ex){
            JOptionPane.showMessageDialog(this, ex.getMessage());
        }
        
        
        
    }  

这是我数据库中列的图片

【问题讨论】:

  • 您知道如何从数据库中读取数据——它已经在您的代码中:SELECT <criteria> FROM <table>。您不需要知道如何根据条件进行选择。您将阅读usertype 并将其作为变量存储在您的应用程序中,并将其用作条件there。你真正需要做的是学习SQL。谷歌上一个教程并开始阅读,因为 Stack Overflow 不是学习基础知识的地方。

标签: java mysql sql swing netbeans


【解决方案1】:

由于您正在执行 SELECT *,因此您应该能够通过类似的方式访问您的 java 代码中的用户类型

if(rs.next()){
    String userType = rs.getString("usertype");
    if(userType.equals("admin")){
        // your admin code here
    }else{
        // your user code here
    }
}

【讨论】:

  • 嗨,我试过这段代码,但似乎 else 总是运行。我尝试使用具有正确详细信息的管理员帐户登录,但它运行的是用户代码的 else。知道如何解决这个问题吗?
  • 调试你的代码并确保你从你的数据库中得到你期望的数据
  • 请用equals方法比较两个字符串
猜你喜欢
  • 2019-10-19
  • 2017-10-26
  • 1970-01-01
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 2020-12-13
相关资源
最近更新 更多