查询用户的操作函数:
public Member findName(String mid,String password) throws SQLException{
Connection conn = OracleJDBC.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select * from userTable where mid=? and password=?";
try{
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, mid);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
System.out.println("rs: "+rs.next());
while(rs.next()){
System.out.println("当前登陆用户:"+rs.getString(1));
Member member = new Member();
member.setMid(rs.getString(1));
member.setPassword(rs.getString(2));
member.setName(rs.getString(3));
member.setAddress(rs.getString(4));
member.setTelephone(rs.getLong(5));
member.setZipcode(rs.getInt(6));
return member;
}
}catch(Exception e){
e.printStackTrace();
}finally{
pstmt.close();
conn.close();
}
return null;
}rs.next() 在控制台输出: true.    (上面函数有写输出语句)
但是在函数中while(rs.next())之后的语句不执行,最后返回了个null值。
请问有能解决这问题的吗?  机子也重启过。而且之前可以运行通过。

解决方案 »

  1.   

    第一个rs.next()的时候就已经想下指了一个,因为只有一条记录嘛,你再用一次next,那就会指向后面一条,那肯定就是空了呀。
      

  2.   

    1.登陆用户查询一般只会返回一条数据
    2.
    System.out.println("rs: "+rs.next());//不会空,游标在那条数据上,去掉这句应该就对了
    while(rs.next()){//游标右移,只有一条数据,后面没有了,所以为null建议
    System.out.println("rs: "+rs.next());改成System.out.println("rs=null?"+rs==null);