当前位置: 代码迷 >> Java相关 >> 用SWT 做的登陆框.....登陆验证时出现的问题
  详细解决方案

用SWT 做的登陆框.....登陆验证时出现的问题

热度:214   发布时间:2012-10-30 16:54:50.0
用SWT 做的登陆框.....登陆验证时出现的问题
新手刚学java(主要是SWT界面);遇到个问题,求大虾门帮我解决.
程序代码:
try {
                    con = DriverManager.getConnection(url);
                    Statement stat = con.createStatement();
                    String sql = "select 读者编号 ,读者密码  from Reader";
                    ResultSet rs = stat.executeQuery(sql);
                    while (rs.next())
                    {
                        if(text.getText().toString().equals(rs.getString("读者编号"))&&
                                text_1.getText().toString().equals(rs.getString("读者密码")))
                        {           
                                shell_1.setVisible(false);
                                new MyInformation();

                        }
                       
                        else  JOptionPane.showMessageDialog(null, "请输入正确的密码!!!");
                           
                    }
                  
                    con.close();
                } catch (SQLException e1) {
                  
                    e1.printStackTrace();
                }               
用这段代码后,,会弹出  请输入正确的密码!!! 的提示窗口,而提示窗口需要点击12次确定 才会关闭,
这个问题怎么解决?(我希望的是弹出一个提示窗口,点击确定提示窗口就关闭)
搜索更多相关的解决方案: sql  读者  

----------------解决方案--------------------------------------------------------
这是逻辑问题
while(rs.next()) 这个循环中会遍历数据
当你的数据库中有12条记录时,他会循环12次

if(text.getText().toString().equals(rs.getString("读者编号"))&&
                                text_1.getText().toString().equals(rs.getString("读者密码")))

当读者编号和读者密码都正确时,说明登录正确。其中有一个不正确时就是错误的吗?
例如有2条记录
读者编号1  密码A
读者编号2  密码B
登录信息输入2  B
遍历第一条数据时,读者编号1和输入的编号2不相等,此时登录信息就是错误的吗?

想通了你就知道怎么改了

----------------解决方案--------------------------------------------------------
回复 2楼 shellingford
嗯嗯,谢谢楼上指导!
我当时把登陆框做出来后,连接好数据库后,我尝试登陆,弹出那个提示框后我一般点几次,发现总是关不了,我以为是语句有问题,后来仔细想了会:我设了12个用户名和密码,肯定要比较验证12次,于是我试着点12下提示框,果然关掉了,所以还是循环有问题,于是我就想找个函数,功能是在遍厉到最后一组数据时在做出判断,不过没找到,不知道这样想对不对?还往楼上帮我想出解决方法...谢谢
----------------解决方案--------------------------------------------------------
呵呵  我太2了 其实只要把那个弹出提示框的语句放到循环外就行了....哎,还是谢谢2楼大虾的指点!!
程序代码:
                    if(isequal_1==1)
                    {
                        if(isequal_2==1)  {shell_1.setVisible(false);new MyInformation();}
                        else  JOptionPane.showMessageDialog(null, "请输入正确的密码!!!");
                    }
                    else  JOptionPane.showMessageDialog(null, "请输入正确的用户名!!!");

----------------解决方案--------------------------------------------------------
  相关解决方案