//我知道为什么错了,俩个String 类型的数据不能直接比较大小,必须借助于String 类提供的函数,如:equal()等
package com.package_model;
import com.package_sqlhelper.SqlHelper;import java.sql.*;
public class UserCheck
{
// 定义一个为表现层提供的接口函数
/*
* 这个函数应该能完成如下功能:
* 1.判断,用户传递过来的用户名是否存在?
* 2.如果不存在,在返回一个false
* 3.如果用户名存在,则检查该用户名所提供的密码和查询数据库得知的同一个用户名的密码是否一样,
* 如果不一样,则,打印出:密码出错,如果一样,则打印出:尊敬的用户欢迎进入
*
*
*
*
*
* */
public void check(String name,String passw)
{
String usr_name=name;
// int a = Integer.parseInt(str);
int usr_name_1 =Integer.parseInt(usr_name); // 强制类型转换之后,我看还错不错???
// 转换之后,提示:执行了
/*用户输入的登录名:001
123456
从上层传递过来的用户名:1
数据库中的登录名:1
用户名正确!
密码输入错误,请重新输入.....
此处位于监听器末尾
*/
/*
* 之所以usr_name 和 Name都是String 类型,而且值都是001,为什么不相等???
* 而,一旦把他们做强制性类型转换,都转换为int 之后,又能重新比较,且值相等,这是为什么???
* 求解???
*
* */
System.out.println("从上层传递过来的用户名:"+usr_name_1);
String usr_passw=passw;
ResultSet rs_model;
String sql="select*from stu_login";
SqlHelper sql_model=new SqlHelper();
try {
rs_model=sql_model.query(sql);
while(rs_model.next())
{
int Name=rs_model.getInt(1);
System.out.println("数据库中的登录名:"+Name);// 用于查看数据库中的登录名。
String PS =rs_model.getString(2);
if(Name==usr_name_1)//Name==usr_name 他俩都是String 类型,为什么就是不相等 ????
{
System.out.println("用户名正确!");
if(PS==usr_passw)
{
System.out.println("尊敬的用户欢迎您进入");
break;
}else
System.out.println("密码输入错误,请重新输入.....");
}
else
{
if(Name==usr_name_1) System.out.println("验证是否相等....");
if(Name!=usr_name_1) System.out.println("用户名不存在!请核准后再登录.....");//为什么执行过程直接跳转到这个语句???
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public UserCheck()
{
}
}