日期:2014-05-20  浏览次数:20762 次

求助:SQL server中不支持ResultSet.last()怎么办啊?
主要是用来分页显示的,但是在获取记录集时需要指针移到最后一条记录,麻烦各位帮帮忙!!谢谢!!!
PreparedStatement   p=null;
ResultSet   rs=null;
p=conn.prepareStatement( "SELECT   *   FROM   student ");
rs   =   p.executeQuery();
                                    rs.last();  
                                    RowCount   =   rs.getRow();  
PageCount   =   ((RowCount   %   PageSize)   ==   0   ?  
(RowCount/PageSize)   :   (RowCount/PageSize)+1);
String   ToPage   =   request.getParameter( "ToPage ");
if(ToPage   !=   null)   //判断是否可正确取得ToPage参数
{
ShowPage   =   Integer.parseInt(ToPage);     //取得指定显示的分页页数
if(ShowPage   >   PageCount)     //下面的if语句将判断用户输入的页数是否正确
{
ShowPage   =   PageCount;     //判断指定页数是否大于总页数,   是则设置显示最后一页
}
else   if(ShowPage   <=   0)
{
ShowPage   =   1;     //若指定页数小于0,   则设置显示第一页的记录
}
}
rs.absolute((ShowPage   -   1)   *   PageSize   +   1);     //计算欲显示页的第一笔记录位置
%>
<H3> 当前在第 <FONT   SIZE   =   4   COLOR   =   red>
<%=   ShowPage   %> </FONT> 页,   共
<FONT   SIZE   =   4   COLOR   =   red>
<%=   PageCount   %> </FONT> 页 </H3>

------解决方案--------------------
用创建 Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

conn为Connection的实例!!


用stmt执行sql语句后来获得ResultSet 就可以使用last方法移动指针了!!

------解决方案--------------------
对于sql server而言,
如果要支持数据库指针,
即last()、first()等定位操作,
需要在注册驱动时,加如一个参数。
如下:
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=yourDB;selectMethod=cursor

即:selectMethod=cursor

:)