求助: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
:)