У меня есть страница входа в систему и когда введены данные для входа в систему, цикл while обращается к базе данных для проверки входов, но если у меня есть 3 записи в базе данных и входы неверны, отображается сообщение об ошибке 3 раза, и если входы правильные, сообщение об ошибке отображается дважды. Я знаю, почему это происходит (из-за цикла while), но я не могу понять, как противодействовать этому. код ниже:while loop возвращающее сообщение об ошибке несколько раз
package securitySystem;
import java.awt.*;
import javax.swing.*;
import java.sql.*;
import java.awt.event.*;
public class loginPage extends JFrame {
public static void main (String args[]){
loginPage gui= new loginPage();
gui.setSize (400, 400);
gui.setLocationRelativeTo(null);
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setVisible(true);
gui.setTitle("Login Page");
}
JLabel lblUserName= new JLabel("UserName:");
JTextField txtUserName= new JTextField(15);
JLabel lblPassword= new JLabel("Password:");
JTextField txtPassword= new JTextField(15);
JButton btnForgotten= new JButton("Forgotten Login");
JButton btnLogin= new JButton("Login");
public loginPage(){
setLayout (null);
//JLabel lblUserName= new JLabel("UserName:");
lblUserName.setBounds(100,100,110,30);
add(lblUserName);
//JTextField txtUserName= new JTextField(15);
txtUserName.setBounds(170,100,110,30);
add(txtUserName);
//JLabel lblPassword= new JLabel("Password:");
lblPassword.setBounds(100,150,110,30);
add(lblPassword);
//JTextField txtPassword= new JTextField(15);
txtPassword.setBounds(170,150,110,30);
add(txtPassword);
//JButton btnLogin= new JButton("Login");
btnLogin.setBounds(100,300, 70, 30);
add(btnLogin);
actionlogin();
//JButton btnForgotten= new JButton("Forgotten Login");
btnForgotten.setBounds(175,300, 130, 30);
add(btnForgotten);
}
public void actionlogin()
{
btnLogin.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
String username = txtUserName.getText();
String password = txtPassword.getText();
String databaseUsername = "";
String databasePassword = "";
String dataSourceName = "securitySystem";
String dbUrl = "jdbc:odbc:" + dataSourceName;
try{
//Type of connection driver used
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//Connection variable or object param: dbPath, userName, password
Connection con = DriverManager.getConnection(dbUrl, "", "");
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery("select username, password from employee");
while(rs.next())
{
if(username.equals(rs.getString("username")) && password.equals(rs.getString("password")))
{
adminMenu gui =new adminMenu();
gui.setSize (400, 400);
gui.setLocationRelativeTo(null);
gui.setVisible(true);
dispose();
}
else
{
JOptionPane.showMessageDialog(null,"The username or password that you have entered are incorrect");
txtUserName.setText("");
txtPassword.setText("");
txtUserName.requestFocus();
}
}
statement.close();
con.close();
}catch (Exception e) {
try {
throw e;
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
}
}
PERFECT, знал, что это простое исправление – Adam
@Adam Проверьте мое редактирование - я думаю, у вас есть другие проблемы. –
изменил его, но не поставил последнее место! – Adam