我正在處理用戶登錄頁面。我希望管理員有權訪問管理員部分,但不是常規用戶。以下代碼的工作原理除了如果除管理員以外的用戶登錄,他們會得到錯誤的密碼錯誤併發送到正確的頁面。如果允許否定答案和正答案,我認爲嵌套有問題。我非常感謝在這個問題上的任何幫助。在java中嵌套if語句
try {
String sql="Select * from Users1";
String host ="jdbc:derby://localhost:1527/Nash";
String uName = "CON";
String uPass = "smokes";
Connection con = DriverManager.getConnection(host, uName, uPass);
Statement stmt=con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
String user= userName.getText();
String pwd= password.getText();
while(rs.next()) {
String uname=rs.getString("User_name");
String pass=rs.getString("Password");
String admin1=rs.getString("admin");
if ((user.equals(uname)) && (pwd.equals(pass)))
{
mainPanel.setVisible(true);
blankContent.setVisible(true);
adminButton.setEnabled(false);
receiptContent.setVisible(false);
memberContent.setVisible(false);
securityPanel.setVisible(false);
}
if ((user.equals(uname)) && (pwd.equals(pass))&&(admin1.equals("y")))
{
mainPanel.setVisible(true);
blankContent.setVisible(true);
adminButton.setEnabled(true);
receiptContent.setVisible(false);
memberContent.setVisible(false);
securityPanel.setVisible(false);
}
else
{
JOptionPane.showMessageDialog(null, "User name and password do"
+ " not match!","ALERT!", JOptionPane.ERROR_MESSAGE);
}
} } catch (SQLException ex) {
Logger.getLogger(program.class.getName()).log(Level.SEVERE, null, ex);
}
編輯 以下是編輯的代碼鏈接---> New revised code link
我不確定這是否符合您的想法。我不確定每一行是什麼,但是你的標籤結構相當複雜。嘗試一個autoformat;看看是否解決了這個問題? – Zyerah
好吧,顯然問題出在'&&(admin1.equals(「y」)'。如果其中任何一個語句都是false,它會立即進入'else',您需要將其分解爲單獨的語句 – Apropos
如果這些答案都不起作用,那麼確保'admin1 = rs.getString(「admin」);''返回'y' **或**'Y'並且確保你沒有在檢查'admin1'時傳遞'null' – Smit