java - 取决于用户角色的登录
问题描述
我正在尝试创建程序,该程序将根据用户的角色显示或隐藏按钮,取决于用户是管理员还是其他人。所以在这种情况下,我将字符串从“登录”框架传递到“菜单”框架,如果字符串等于我的要求,它会显示按钮,如果不是,则在“菜单”框架上隐藏按钮。现在这是使用字符串。但是除了从数据库中提取角色之外,如何做同样的事情呢?我在数据库中有那个字段,但我不知道该怎么做。- 我在数据库中的字段是用户名、密码和角色。
谢谢!
登录框
JButton btnLogin = new JButton("Login !");
btnLogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String username = textUsername.getText();
String password = passwordField.getText();
String S = "Administrator";
String query = "SELECT * FROM ADMINISTRATION where username=? and password=?;";
PreparedStatement stmt = connection.prepareStatement(query);
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet set=stmt.executeQuery();
if (set.next()) {
Menu menu = new Menu();
menu.setVisible(true);
setVisible(false);
menu.Proba(S);
stmt.close();
connection.close();
}
else {
JOptionPane.showMessageDialog(contentPane, "Pogrešno korisničko ime ili lozinka !", "Greška !", JOptionPane.ERROR_MESSAGE);
}
} catch (Exception e2) {
// TODO: handle exception
}
}
});
菜单框架
public void Proba(String S) {
if (S.equals("Administrator")) {
btnOption.setVisible(true);
}
else {
btnOption.setVisible(false);
}
}
解决方案
好的,我假设这是一个学术项目。
因此,您有一个 ResultSet 并且正在对其进行迭代,当您调用“next”方法时,您将移动到下一行(在本例中为第一行)。
现在您有了一行,您需要调用一个从列中检索字符串值的方法(在本例中为角色),请查看文档:
https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html
您有一个需要列名的“getString”方法,并将从该列返回字符串值。
一个例子可能是:
if (set.next()) {
String role = set.getString("role");
Menu menu = new Menu();
menu.setVisible(true);
setVisible(false);
menu.Proba(role);
stmt.close();
connection.close();
}
推荐阅读
- python - 确定多行尝试中哪个语句失败
- python - Matplotlib savefig 函数在 Spyder 中不起作用
- swift - 扩展是否每次都返回新实例
- aspnetboilerplate - ABP .net core ,Vue模板请求signarl erver错误
- html - 在 React 组件中,执行
- android - 如何将 Google Play 服务添加到我的虚拟设备?
- android - 当前上下文中不存在名称“AccountPicker”-Xamarin.Android
- git - 远程分支和本地分支之间的差异
- javascript - 正确改写打字稿签名,返回自定义类型而不是方法所需的严格签名
- django - django 在 has_perm() 中使用模板标签