英文:
How to read value from mysql database based on condition?
问题
我正在进行一个Java项目,允许用户根据他们在帐户创建时选择的角色登录为管理员或用户。我已经成功编写了代码,在我的应用程序的登录页面上检查他们的用户名和密码是否正确,方法是检查这些值是否存在于数据库中。然而,我想让用户以管理员或用户的身份登录,但我不知道如何实现。我考虑如果我可以从数据库中读取他们在帐户创建时选择的角色(用户或管理员),然后可以基于这个值编写一个条件语句。例如,如果(usertype == 'admin'){ // 转到管理员页面} 但是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());
    }
}
<details>
<summary>英文:</summary>
I am doing a Java project to allow users to either log in as an admin or user based on what they selected from their account creation. I managed to do a code to check if their username and password were correct in my login page of the application by checking if those values are present in the database, however, I want the user to login as either an admin or user but I don't know how to do that. Im thinking if I can read what they selected as (either user or admin) from their account creation in the database (refer below for picture of database columns), then I am able to do an if statement based on that. For example if(usertype == 'admin'){ // then go to admin page} But usertype is a column in the database which I don't know how to read.I have my code below as well which is function that activates whenever the login button is pressed.If you know of a solution, let me know thank you.    
    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());
            }
            
            
            
        }  
This is a picture of the columns that are in my database
[![enter image description here][1]][1]
                
  [1]: https://i.stack.imgur.com/RqV5m.png
</details>
# 答案1
**得分**: 1
由于你正在执行SELECT *,你应该能够在你的Java代码中通过以下方式访问usertype:
```java
if(rs.next()){
    String userType = rs.getString("usertype");
    if(userType.equals("admin")){
        // 这里是你的管理员代码
    }else{
        // 这里是你的用户代码
    }
}
英文:
Since you're doing a SELECT *, you should be able to access the usertype in your java code with something like
if(rs.next()){
    String userType = rs.getString("usertype");
    if(userType.equals("admin")){
        // your admin code here
    }else{
        // your user code here
    }
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。



评论