我有一个包含用户的数据库,每个人都有一个角色。 U代表用户,A代表管理员。我在类上有一个名为getRole()的方法,它获取用户广告的角色,将其作为String返回。在另一个类中,我调用此方法,将其结果保存为String,然后测试该String。如果是A(管理员),那么继续。问题是String返回A,但程序不会继续。这有什么不对?
getRole()方法:
public String getRole() throws SQLException {
userid = "c##lambros";
password = "16111111";
jdbcUrl = "jdbc:oracle:thin:@localhost:1521:ORCL";
conn = DriverManager.getConnection(jdbcUrl, userid, password);
checkRole = "SELECT role FROM users where username = '" + usernameF.getText() + "' AND password = '" + passwordF.getText() + "' ";
System.out.println(checkRole);
stmt = conn.createStatement();
rset = stmt.executeQuery(checkRole);
while (rset.next()){
role = rset.getString(1);
System.out.println("The User's Role is " + role);
}
return role;
}
IF声明:
Login login = new Login();
TermResultsFromDB terms = new TermResultsFromDB();
String role;
try {
role = login.getRole();
System.out.println(role);
if(role=="A"){
terms.getTerms(query);
terms.setVisible(true);
terms.setLocation(z, y);
terms.pack();
}
else if (role!="A")
System.out.println("Sorry! Not sufficient Privileges!");
} catch (SQLException f) {
}
答案 0 :(得分:2)
==
运算符比较引用,以便
role == "A"
将始终返回false
,因为role
是与"A"
不同的对象。相反,请使用equals
来比较您的Strings
.-
if("A".equals(role)) {
...
else if (!"A".equals(role)) {
有关比较字符串here的更多信息。
答案 1 :(得分:0)
我认为可能是因为区分大小写。
所以你可以使用
if(role.equalsIgnoreCase("A"))
{
//
}
else if(role.equalsIgnoreCase("A"))
{
//
}
答案 2 :(得分:0)
首先检查角色变量中的字符串A是否为大写?如果没有,那么使用这个
if(role.toUpperCase().equals("A")) {
// statement
} else {
// statement
}