是真没办法了,自己想了一天了,不知道有木有能解决?解决办法

是真没办法了,自己想了一天了,不知道有木有能解决????
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==Enter)
{
String username , password;
username = name.getText();
password = pwd.getText();
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (ClassNotFoundException ce)
{
JOptionPane.showMessageDialog(ss,ce.getMessage());
}
if(stu.isSelected())
{
try
{
Connection con = DriverManager.getConnection("jdbc:odbc:demo","sa","lxw664910219");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from STU");
while(rs.next())
{
if((rs.getString("ID").equals(username))&&(rs.getString("Pwd").equals(password)))
{  
JOptionPane.showMessageDialog(ss,"登陆成功");
Students stu = new Students();
}
else
{
JOptionPane.showMessageDialog(ss,"登录失败");
}
}
rs.close();
stmt.close();
}
catch (SQLException se)
{
JOptionPane.showMessageDialog(ss,se.getMessage());
}
}
else if(tch.isSelected())
{
try
{
Connection con = DriverManager.getConnection("jdbc:odbc:demo","sa","lxw664910219");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from TCH");
while(rs.next())
{
if((rs.getString("ID").equals(username))&&(rs.getString("Pwd").equals(password)))
{
JOptionPane.showMessageDialog(ss,"登陆成功");
}
else
{
JOptionPane.showMessageDialog(ss,"登录失败");
}
}
}
catch (SQLException se)
{
JOptionPane.showMessageDialog(ss,se.getMessage());
}
}
}
else
{
System.exit(0);
}
}
这是按下确定以后,登陆监听,数据库里也有秘密和账号,且我用输出验证过了,都正确,问题是每次if判断是都是else的部分,if里的equlas好像又问题,但真是搞不懂是啥问题。

------解决方案--------------------
你这样全表扫描,逻辑当然有问题
while(rs.next())循环那部分逻辑改为
int flag =0;
while(rs.next())
{
if((rs.getString("ID").equals(username))&&(rs.getString("Pwd").equals(password)))
{
flag++;
break;
}

}
if(flag >0)
{
JOptionPane.showMessageDialog(ss,"登陆成功");
}
else
{
JOptionPane.showMessageDialog(ss,"登录失败");
}
你两个地方的逻辑都要这样改
另外建议将密码和账号传到sql语句里面去(如果暂时还不会PreparedStatement),直接判断就可以
ResultSet rs = stmt.executeQuery("select * from TCH where ID='"+username+"' and Pwd='"+password"'");
if(rs.next())
{
JOptionPane.showMessageDialog(ss,"登陆成功");
}
else
{
JOptionPane.showMessageDialog(ss,"登录失败");
}

------解决方案--------------------
输出的时候,左右加上些其它符号,可能是由于非打印字符引起的,比如空格。

System.out.println("[" + username + "]");
System.out.println("[" + rs.getString("ID")+ "]");

------解决方案--------------------
if((rs.getString("ID").equals(username))&&(rs.getString("Pwd").equals(password)))

上面这句,楼主debug下程序,手动看一下,username,password的值是什么,然后看一下是不是和rs.getString("ID"),rs.getString("Pwd")相等。 如果密码是用md5等加密过的,那密码那一项肯定是不相等的了。

另外,楼主这样循环结果集不是太好。
ResultSet rs = stmt.executeQuery("select * from STU");