难者不会,会者不会系列问题——JDBC小问题。大家展开讨论一下,

orant 2004-01-12 03:13:05
我在JSP中的分页程序用到absolute()方法。
但报错:
[Microsoft][SQLServer 2000 Driver for JDBC]Invalid operat
ion for the current cursor position.java.sql.SQLException:

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported method: ResultSet.absolute

我现在想知道用代码怎么替代absolute()?
如果保留absolute()方法,哪里有支持SQLSERVER的驱动。
...全文
73 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdx 2004-01-14
  • 打赏
  • 举报
回复
可以用Hibernate或OJB等ORM工具,它对不同的数据库如DB2\SQLServer\Oracle等的JDBC语句作了优化,如果你有兴趣,可以查看代码是如何实现的.
分页不是SQL的语法标准吧,不同的数据库的语句写法不同!
huiyannan 2004-01-14
  • 打赏
  • 举报
回复
up
ncepu158wyf 2004-01-14
  • 打赏
  • 举报
回复
select top 这个方法不好吗
zhwquan 2004-01-14
  • 打赏
  • 举报
回复
是呀,分页mysql用limit,oracle 用rownum,sql server没有好办法哦!
mxlmwl 2004-01-14
  • 打赏
  • 举报
回复
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.sql.*"%>
<jsp:useBean id="test" scope="page" class="OT.OraTest" />
<%
int PageSize=4;//设置每张网页显示4条记录
int ShowPage=1;//设置欲显示的页数
int RowCount=0;//ResultSet 的记录条数
int PageCount=0;//ResultSet 分页后的总页数

ResultSet rs;
rs=test.excuteQuery("select * from fei");
if(rs.next())
{
rs.last();
RowCount=rs.getRow();
PageCount=((RowCount%PageSize)==0?(RowCount/PageSize):(RowCount/PageSize)+1);//计算显示的页数


String ToPage=request.getParameter("ToPage");
if(ToPage!=null)
{
ShowPage=Integer.parseInt(ToPage);//取得指定显示的分页页数
//下面的语句用于判断使用者在文本框中输入的页数是否正确
if(ShowPage>PageCount)//判断指定页数是否大于总页数,是则设置显示最后一页
{
ShowPage=PageCount;
}
else if(ShowPage<=0)//若指定页数小于0,则设置显示第一页的记录
{
ShowPage=1;
}
}
rs.absolute((ShowPage-1)*PageSize+1);//计算欲显示页的第一条记录的位置
%>
共有<%=RowCount%>个企业 
<%
if(RowCount<=PageSize)
{
%>
首页  前一页  后一页  尾页 
<%
}
else
{
if(ShowPage!=1)//判断目前页面是否为第一页,如果不是则执行
{
if(ShowPage!=PageCount)//判断是否为最后一页,如果不是则执行
{
%>
<a href="test.jsp?ToPage=<%=1%>">首页</a>  <a href="test.jsp?ToPage=<%=ShowPage-1%>">前一页</a>  <a href="test.jsp?ToPage=<%=ShowPage+1%>">后一页</a>  <a href="test.jsp?ToPage=<%=PageCount%>">尾页</a>
<%
}
else
{
%>
<a href="test.jsp?ToPage=<%=1%>">首页</a>  <a href="test.jsp?ToPage=<%=ShowPage-1%>">前一页</a>  后一页  尾页 
<%
}
}
else
{
%>
首页  前一页  <a href="test.jsp?ToPage=<%=ShowPage+1%>">后一页</a>  <a href="test.jsp?ToPage=<%=PageCount%>">尾页</a>
<%
}
}
%>
共<%=PageCount%>页
<form action="test.jsp" method=post name="form1">
第<input type="text" name="ToPage" value="<%=ShowPage%>">页
<input type="submit" value="跳至">
</form>
<%/*********************************************************取出数据*************************************************************/%>
<%
for(int i=1;i<=PageSize;i++)//利用 for 循环配合PageSize属性输出一页中的记录
{
String id=rs.getString("id");
out.println(id);
if(!rs.next())//判断是否到达最后一条记录(目的:用于防止输出最后一页记录时,将记录指针移动到最后一条记录之后
break;
}
rs.close();
}
else
{
out.println("没有数据!");
}
%>
我做的分页程序,适合与少量数据。如果有大量数据的话,请用oracle的rownum来实现。
寒冬 2004-01-12
  • 打赏
  • 举报
回复
up
orant 2004-01-12
  • 打赏
  • 举报
回复
加油贴,明天下班前结贴
jokerjava 2004-01-12
  • 打赏
  • 举报
回复
楼上的还比不上用absolute()呢
jokerjava 2004-01-12
  • 打赏
  • 举报
回复
这个方法jdbc的标准接口吧

用代码实现 去做个数据库 在做个jdbc驱动包
很轻松就能实现 呵
寒冬 2004-01-12
  • 打赏
  • 举报
回复
如不用,
你可以用一个循环,来代替
for (int i = 1; i <= (pageId * pageSize); i++) {
if (i <= ( (pageId - 1) * pageSize)) {
rs.next();
}
}
orant 2004-01-12
  • 打赏
  • 举报
回复
如果用代码实现干吗不谈谈啊加油啊
loveyousomuch 2004-01-12
  • 打赏
  • 举报
回复
楼上2位都已经说了!
wjfxiao 2004-01-12
  • 打赏
  • 举报
回复
需要这样生成你的statement实例:
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
//如果不允许修改,则这样:
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
然后就可以使用absolute()方法了
youthy_yy 2004-01-12
  • 打赏
  • 举报
回复
本来就支持啊,你的statement没有使用可滚动游标吧?
stmt=dbc.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧