为什么我的程序不通过Java检查MySQL中第一个行以外的行中的数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的程序不通过Java检查MySQL中第一个行以外的行中的数据?相关的知识,希望对你有一定的参考价值。


Info:


mysql Workbench 8.0 CE

适用于JAVA开发人员的Eclipse IDE 2020-03

数据库名称:数据库

表名:数据


我正在尝试制作一个Java程序,该程序将连接到MySQL数据库并充当登录表单。有一个问题,程序只能随机验证第一行或最后一行,而不能验证它们之间的行。开头总共有4行。这是我的代码:

Connection 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数据时,程序将显示无效的登录信息,除非该数据属于第一行或最后一行。不幸的是,这也是随机的。有时,仅第一行数据显示正确,有时,仅最后一行显示。

我的代码中有错误吗?请帮助我,因为在一次又一次的彻底检查之后,我感到非常沮丧。

答案
对不起,我很愚蠢,但解决方法是删除使用not(!)条件的

break形式。如果程序在第一行中找不到匹配项,则循环中断,并显示无效的信息消息。

以上是关于为什么我的程序不通过Java检查MySQL中第一个行以外的行中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

我的java程序打包后双击运行会出现这样错误:java.lang.class.notfoundexception:com.mysql.jdbc.driver

如何从 Android 应用程序通过 JDBC 连接到远程 MySQL 服务器

MySQL 服务器已消失 - 通过结帐事件处理程序的断开连接处理不起作用

如何检查mysql数据库是不是存在

JAVA如何存储mysql登录信息

ubuntu 下安装discuz ,检查时提示mysql_connect()不通过:请检查mysql模块是不是正确加载。不知道啥原因