Информация:
MySQL Workbench 8.0 CE
Eclipse IDE для JAVA разработчиков 2020-03
Имя базы данных: база данных
Имя таблицы: данные
Я пытаюсь создать программу Java, которая будет подключаться к базе данных MySQL и действовать как форма входа в систему. Существует проблема, заключающаяся в том, что программа может проверять только первые или последние строки случайным образом и не может проверять строки между ними. Всего для начала 4 строки. Вот мой код:
Соединение Connection объявляется в конструкторе и получает соединение через другой класс, который его возвращает.
public void actionPerformed(ActionEvent e) {
try
{
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery("select * from data");
while(rs.next())
{
String usnm=rs.getString("username");
String pswd=rs.getString("password");
String mo=rs.getString("ph.no.");
if(usnmf.getText().equals(usnm)&&pswdf.getText().equals(pswd))
{
flag=1;
break;
}
if(usnmf.getText().equals(mo)&&pswdf.getText().equals(pswd))
{
flag=2;
break;
}
if(!usnmf.getText().equals(usnm)&&!pswdf.getText().equals(pswd)||!usnmf.getText().equals(mo)&&!pswdf.getText().equals(pswd))
{
flag=0;
break;
}
}
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "Error :"+ex);
}
if(flag==1)
{
try
{
PreparedStatement pst=conn.prepareStatement(sql1);
pst.setString(1, usnmf.getText());
ResultSet rs=pst.executeQuery();
if(rs.next())
{
name=rs.getString("name");
}
JOptionPane.showMessageDialog(null, "Login Successful... Welcome "+name);
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "Error: "+ex);
}
}
else if(flag==2)
{
}
else if(flag==0)
JOptionPane.showMessageDialog(null, "Invalid Login Info.");
Здесь usnmf и pswdf являются текстовыми полями имени пользователя и пароля соответственно. Предполагается, что поле имени пользователя будет действовать как поле для имен пользователей и телефонных номеров, которые находятся в отдельных столбцах. Практически тип данных поля номера телефона varchar, и пароль проверяется без хеширования. Это только для начала. Но когда я ввожу правильные данные для любого поля, программа показывает неверные данные для входа в систему, если только данные не принадлежат первой или последней строке. К сожалению, это тоже случайно. Иногда правильные данные отображаются только в первой строке, а иногда только в последней строке.
Есть ли ошибка в моем коде? Пожалуйста, помогите мне, потому что после тщательной перепроверки снова и снова, я очень расстроен.