日期:2014-05-18  浏览次数:20805 次

jsp中rs.last()的使用,结果集不可操作!
如今小弟遇到如下问题,利用last()方法,得到移到最后一行。然而,同样代码都在MyEclipse中,在不同的项目中,一个能执行,另一个不能执行,为什么?(可以连接到数据库,并查询到数据)
 public ResultSet ExecuteSELECT(String sql) throws SQLException
  {
  try
  {
  Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
   
  rs=stmt.executeQuery(sql);
  }
  catch(SQLException ex)
  {System.err.println(ex.getMessage());}
  return rs;
  }

  ConnectDatabase conn=new ConnectDatabase();
  conn.GetConnection();
  String sql="select * from ware";
  ResultSet rs=conn.ExecuteSELECT(sql);
  if(rs.last())
  out.print("success");
else
out.print("lost"); 
问题:javax.servlet.ServletException: com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作。
 org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
 org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
 org.apache.jsp.shop.sort.MyJsp_jsp._jspService(MyJsp_jsp.java:113)
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


------解决方案--------------------
在JAVA中获取ResultSet的长度时提示错误:对只转发结果集的无效操作: last

主要是加上这个就可以了:ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY
Java code

ps = conn   
                    .prepareStatement("SELECT * FROM aa",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);   
  
rs.last();   
System.out.println("长度:"+rs.getRow());