用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次确定 才会关闭,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();
}
这个问题怎么解决?(我希望的是弹出一个提示窗口,点击确定提示窗口就关闭)
----------------解决方案--------------------------------------------------------
这是逻辑问题
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, "请输入正确的用户名!!!");
{
if(isequal_2==1) {shell_1.setVisible(false);new MyInformation();}
else JOptionPane.showMessageDialog(null, "请输入正确的密码!!!");
}
else JOptionPane.showMessageDialog(null, "请输入正确的用户名!!!");
----------------解决方案--------------------------------------------------------