执行SQL语句,出现Before start of result set问题

在下面代码中,执行会出现Before start of result set问题

request.setCharacterEncoding("utf-8");
  String username = request.getParameter("username");
  String idcard = request.getParameter("idcard");
  
  HttpSession session =request.getSession();
 
  Connection conn = null;
  PreparedStatement stat = null;
  ResultSet rs = null;
  
  try
  {
   conn = JdbcUtil.getConnection();
   String sql = "select * from user t where t.name=? and t.id =?";
   stat = conn.prepareStatement(sql);
   stat.setString(1, username);
   stat.setString(2, idcard);
   rs = stat.executeQuery();
   System.out.println("查询成功");
   if(rs.next())
   {  
    
    session.setAttribute("id", rs.getString(1));
    session.setAttribute("name",rs.getString(2));
    session.setAttribute("age",rs.getString(3));
    request.getRequestDispatcher("result.jsp").forward(request, response);
    return;
   }
   
  } catch (ClassNotFoundException e)
  {
   e.printStackTrace();
  } catch (SQLException e)
  {
   e.printStackTrace();
  }
  /*****************************************分割线****************************************/

问题出现在上面红字部分,不可以那样用。

应该 先定义

String s1 = "";

String s2 = "";

String s3 ="";

if(rs.next())

{

   s1 = rs.getString(1);

   s2 = rs.getString(2);

   s3 = rs.getString(3);

   ...  ...

}

 

     即使你十分确定能搜出记录,也不可以在没有rs.next()之前直接对rs进行取值。这涉及到rs对象的存储方法。里面说白了就是指针。没next,指针根本没指向对应记录。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值