如何根据条件从MySQL数据库中读取数值?

huangapple go评论73阅读模式
英文:

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());
    }
}

这是我的数据库中的列的图片:
如何根据条件从MySQL数据库中读取数值?


<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&#39;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 == &#39;admin&#39;){ // then go to admin page} But usertype is a column in the database which I don&#39;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 = &quot;SELECT * FROM `accounts` WHERE username=? and password=?&quot;; // and usertype=?
                con = DriverManager.getConnection(&quot;jdbc:mysql://localhost/restock&quot;, &quot;root&quot;, &quot;password&quot;);
                pst = con.prepareStatement(query);
                pst.setString(1, txtUsername.getText());
                pst.setString(2, txtPassword.getText());
                rs = pst.executeQuery();
                if(rs.next()){
                    
                    JOptionPane.showMessageDialog(this, &quot;Login is successful as admin&quot;);
                    mainpage admin = new mainpage();
                    admin.setVisible(true);
                    dispose();
                }
                else{
                    JOptionPane.showMessageDialog(this, &quot;Incorrect username or password&quot;);
                    /*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(&quot;usertype&quot;);
    if(userType.equals(&quot;admin&quot;)){
        // your admin code here
    }else{
        // your user code here
    }
}

huangapple
  • 本文由 发表于 2020年8月6日 23:49:23
  • 转载请务必保留本文链接:https://go.coder-hub.com/63287310.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定