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

JSP 游标错误
我写了一个jsp通过JDBC访问sqlserver的程序,目标是检索出10条记录并循环显示,但是只要一循环或者执行rs.last()这样的命令,就提示:javax.servlet.ServletException:   [Microsoft][SQLServer   2000   Driver   for   JDBC]Error   reading   data   from   static   cursor   cache   好象游标不能移动。下面是我的程序,很短的,帮忙看看!
<%
  Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");
  String   url= "jdbc:microsoft:sqlserver://159.226.141.247:1433;DatabaseName=conference ";
  String   user= "sa ";
  String   password= "xuyuan7922 ";
  Connection   conn=DriverManager.getConnection(url,user,password);
 
  Statement   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  String   sql= "select   top   10   *   from   confdetail ";
  ResultSet   rs=stmt.executeQuery(sql);  
  rs.next();   (或者rs.last())
  out.print( "一共检索到 ");
  out.print(rs.getRow());
  out.print( "条记录 ");
  if(rs.next())     (这里改成while也会出错)
  {
      out.print( " <p> </p> ");    
      out.print(rs.getString( "detailname "));    
      out.print( " <p> </p> ");    
      out.print(rs.getString( "detaillink "));    
      out.print( " <p> </p> ");    
  }

%>

------解决方案--------------------
设置成这样呢?stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
------解决方案--------------------
api里讲得很详细

static int TYPE_SCROLL_INSENSITIVE
该常量指示可滚动但通常不受其他的更改影响的 ResultSet 对象的类型。
static int TYPE_SCROLL_SENSITIVE
该常量指示可滚动并且通常受其他的更改影响的 ResultSet 对象的类型。

至于第二个参数设置成ResultSet.CONCUR_UPDATABLE可不可以你可以自己试试,我手头没有mssql