public boolean UserCheck(String u,String p){
boolean b=false;/*我发现b的值没有变化,即在这里如果设置默认是true,return b 还是ture,如果默认是false,return b还是false!!!下面不执行?还是数据库没连接上?*/
try{
Conn db=new Conn();
cn=db.getConn();
st=cn.createStatement();
rs=st.executeQuery("select psd from userInfo where user_name='"+u+"'");
if(rs.next()){
String password=rs.getString(1);
if(password.equals(p)){
b=true;
}else{
b=false;
}
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
this.close();
}
return b;
}/****************************************************************************连接数据库的类*********/
public class Conn {
private Connection conn=null; /*定义数据库连接*/
public Connection getConn(){
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=数据库名","sa","sa");
}
catch(Exception ex){
ex.printStackTrace();/*输出错误信息*/
}
return conn;
}
}
boolean b=false;/*我发现b的值没有变化,即在这里如果设置默认是true,return b 还是ture,如果默认是false,return b还是false!!!下面不执行?还是数据库没连接上?*/
try{
Conn db=new Conn();
cn=db.getConn();
st=cn.createStatement();
rs=st.executeQuery("select psd from userInfo where user_name='"+u+"'");
if(rs.next()){
String password=rs.getString(1);
if(password.equals(p)){
b=true;
}else{
b=false;
}
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
this.close();
}
return b;
}/****************************************************************************连接数据库的类*********/
public class Conn {
private Connection conn=null; /*定义数据库连接*/
public Connection getConn(){
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=数据库名","sa","sa");
}
catch(Exception ex){
ex.printStackTrace();/*输出错误信息*/
}
return conn;
}
}
我这里把username设定为主键了,所以rs记录集要么没值,要么有且只有一条记录。而这里if(rs.next()) //rs进行读取一次 判断是否有数据 应该没错啊!?然后,我按照你说的尝试了一下把if(rs.next())改成while(rs.next())效果一样
把boolean b定义到全局