小弟遇到的这个问题也挺郁闷的,因为各个环节都没发现错误 <s:a href="selectinfo.action?username = ${username}&type=users"><s:text name="查看详情"/></s:a> Action页面: public class SelectInfoAction extends ActionSupport { private String username; private String type; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String selectInfo() throws Exception{ System.out.println("Action运行======="); UsersDAO dao = new UsersDAO(); Users user = dao.selectInfo(username); ActionContext.getContext().getSession().put("usre", user); if("allusers".equals(type)){ //用户查看某个用户信息 return INPUT; }else if("users".equals(type)){ //用户查看自己信息 return SUCCESS; }else{ // 管理员查看用户信息 return "find"; } } } Dao页面: public Users selectInfo(String username){ Users user = new Users(); System.out.println("username的值为:"+username); con = DatabaseDAO.getConnection(); try{ pt = con.prepareStatement("SELECT * FROM users where username = ?"); pt.setString(1, username); rs = pt.executeQuery(); rs.last(); // 将光标移动到最后一行 int rowCount = rs.getRow(); // 得到当前行号,即结果集记录数 System.out.println("当前行号为:"+rowCount); if(rs.next()){ System.out.println("........if语句不运行!......."); user.setId(rs.getInt(1)); user.setUsername(rs.getString(2)); user.setPassword(rs.getString(3)); user.setName(rs.getString(4)); user.setNic(rs.getString(5)); user.setEmail(rs.getString(6)); user.setPhone(rs.getString(7)); user.setSelfshow(rs.getString(8)); } }catch (Exception e) { // TODO: handle exception }finally{ DatabaseDAO.closeRs(rs); DatabaseDAO.closePt(pt); DatabaseDAO.clodeCon(con); } return user; } 数据库里内容username是存在的 |
|
10分 |
rs.last(); 的问题吧.rs.last();已经把结果集放到最后一行了.当然没有next. rs.last(); // 将光标移动到最后一行 int rowCount = rs.getRow(); // 得到当前行号,即结果集记录数 |
10分 |
你已经把结果集的指向位置指向了最后一行,rs.last(); 。当你再去next的时候肯定就是false,就不进入你的if块了啊。
rs.last(); // 将光标移动到最后一行 int rowCount = rs.getRow(); // 得到当前行号,即结果集记录数 这两个没有必要,建议删除应该就可以了。 |
10分 |
楼上两位都是正解
|
30分 |
我想一个可能的原因是username值里有空格,?username = ${username}& 这句=号后台的空格可能会和${username}值一起传递到后台,按如下修改试试:
if(username != null){ username = username.trim(); } |
这两条是我做测试用的,把那两条去掉还是进不到if里面,因为结果集里面没东西 |
|
谢谢了!这个问题我发了两个帖子都解决不了,原来是小小的空格出了问题!!自己还是不够细心,不过问题解决了好高兴啊! |
|
不好意思,楼主被我误导了
上次给楼主 rs.last(); // 将光标移动到最后一行 int rowCount = rs.getRow(); // 得到当前行号,即结果集记录数 是帮忙查看记录数的,如果记录数非0,再要用结果集时 可以使用 rs.beforeFirst(); 把指针再移到初始化的位置 楼主的代码中,记录数还是0,还是没有查询到数据 |