为什么我的程序没有通过Java检查MySQL中第一行以外的其他行中的数据?
信息:为什么我的程序没有通过Java检查MySQL中第一行以外的其他行中的数据?,java,mysql,jdbc,Java,Mysql,Jdbc,信息: MySQL工作台8.0 CE 面向JAVA开发人员的Eclipse IDE 2020-03 数据库名称:数据库 表名:数据 我正在尝试制作一个Java程序,它将连接到MySQL数据库并充当登录表单。存在一个问题,即程序只能随机验证第一行或最后一行,并且无法验证它们之间的行。开头共有4行。这是我的密码: 连接conn在构造函数中声明,并通过另一个返回它的类获取连接 public void actionPerformed(ActionEvent e) { try {
MySQL工作台8.0 CE 面向JAVA开发人员的Eclipse IDE 2020-03 数据库名称:数据库 表名:数据
我正在尝试制作一个Java程序,它将连接到MySQL数据库并充当登录表单。存在一个问题,即程序只能随机验证第一行或最后一行,并且无法验证它们之间的行。开头共有4行。这是我的密码: 连接conn在构造函数中声明,并通过另一个返回它的类获取连接
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,密码检查时没有散列,这是不切实际的。这只是开始。但当我为任何字段输入correct数据时,程序会显示无效的登录信息,除非数据属于第一行或最后一行。不幸的是,这也是随机的。有时,只有第一行数据显示正确,有时,只有最后一行数据显示正确
我的代码中有bug吗?请帮助我,因为经过一次又一次的彻底复查,我非常沮丧。对于这一严重的愚蠢行为,我感到抱歉,但解决方法只是删除使用not(!)条件的break表单。如果程序在第一行中没有找到匹配项,则循环被中断,并显示无效信息。break关键字终止循环。你还指望什么?只要使用if-else-if,而不是在那里中断。@Stultuske将在循环时不中断工作?为什么不呢?你做错了。你不需要取整个桌子。应该使用WHERE子句匹配用户名和密码,并查看是否有匹配的行。你应该得到一或零。让数据库来完成这项工作。