分页查询问题 100 分(100分)

  • 主题发起人 主题发起人 Rick.Qin
  • 开始时间 开始时间
R

Rick.Qin

Unregistered / Unconfirmed
GUEST, unregistred user!
开发环境:websphare 5.0 + db2 v7.2
问题:
为了完成分页查询功能,在我的数据库连接bean中(AccessDB.java)新建了一个方法,如下:
//得到记录总数
public int getIntRowCount()
{
return intRowCount;
}

//得到总页数
public int getIntPageCount()
{
return intPageCount;
}

//得到当前显示的页码
public int getIntPage()
{
return intPage;
}
//查询并分页显示
public ResultSet getPageResult(int intPageSize,int page,String sql) throws SQLException
{
intPage=page;
if (conn==null) connect();
Statement stmt=conn.createStatement(scrollType,concurType);
ResultSet rs=stmt.executeQuery(sql);//执行SQL语句并获取结果集

//获取记录总数
rs.last();
intRowCount=rs.getRow();

//记算总页数
intPageCount=(intRowCount+intPageSize-1)/intPageSize;

//调整待显示的页码
if(intPage>intPageCount) intPage=intPageCount;

if(intPageCount >0) rs.absolute((intPage-1)*intPageSize+1);//将记录指针定位到待显示页的第一条记录上
return rs;
}
在jsp页中调用语句如下:
<BODY>
<center>
<%
//设置一页显示的记录数
int intPageSize=3;
int intPage=1;
//取得待显示页码
String strPage=request.getParameter("page");
//取得待显示页码
if(strPage==null || strPage.equals("")) intPage=1;
else
{
float f=Float.parseFloat(strPage);
intPage=Math.round(f);
if(intPage<1) intPage=1;
}
String sql="select * from table1";
ResultSet rs=db.getPageResult(intPageSize,intPage,sql);
int i=0;
while(i<intPageSize &amp;&amp;
!rs.isAfterLast())
{
out.println(rs.getInt(1)+"<br>");
out.println(rs.getString(2)+"<br>");
out.println(rs.getString(3)+"<br>");
rs.next();
i++;
}
%>
<%
int a=db.getIntPage();
int b=db.getIntPageCount();
%>
<br>
第<%= a %>页&amp;nbsp;&amp;nbsp;共<%= b %>页
&amp;nbsp;&amp;nbsp;<% if(a>1){ %>
<a href="pagetest.jsp?page=1">第一页</a>&amp;nbsp;&amp;nbsp;<a href="pagetest.jsp?page=<%= a-1 %>">上一页</a><% }
else
{ %>
第一页&amp;nbsp;&amp;nbsp;上一页<% } %>
&amp;nbsp;&amp;nbsp;<% if(a<b){ %>
<a href="pagetest.jsp?page=<%= a+1 %>">下一页</a>&amp;nbsp;&amp;nbsp;<a href="pagetest.jsp?page=<%= b %>">最后一页</a><% }
else
{%>
下一页&amp;nbsp;&amp;nbsp;最后一页<% } %>
<form action="pagetest.jsp" method="post">
<input type="text" name="page" value="" size="3">
<input type="submit" value="转到">
</form>
<%
db.closeconn();
%>
<br>
</center>
</BODY>
执行时,报错:[IBM][CLI Driver] CLI0145E 取装类型超出范围。 SQLSTATE=HY106
原因不明,请大虾们指教!
 
//取得待显示页码
if(strPage==null || strPage.equals("")) intPage=1;
else
{
float f=Float.parseFloat(strPage);
intPage=Math.round(f);
if(intPage<1) intPage=1;
}
感觉是float.parseFloat(strpage);这里出错,为什么要先转换成float再转换成int我就不懂了,没搞过java,但是看你的类型超出取值范围这种错误的话,应该是有某个地方溢出了吧
 

Similar threads

后退
顶部