英文:
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
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论