翻页技术碰到了问题在实际的应用过程当中,现在给出源程序大家看看毛病出在那里????
<%@page language="java" import="java.sql.*"%>
<%@page contentType="text/html;charset=gb2312"%>
<%
Connection sqlCon;
Statement sqlStmt;
ResultSet sqlRst;
String strCon;
String strSql;
int intPageSize;//每页记录数
int intRowCount;//记录总数
int intPageCount;//总页数
int intPage;//当前页码
String strPage;//传替参数使用
int i;//循环变量
intPageSize=10;
strPage=request.getParameter("page");//
//以不带页码访问的时候,没有参数,此时为首页
if(strPage==null){
intPage=1;
}
else{
intPage=java.lang.Integer.parseInt(strPage);//转换字符传为整形
if(intPage<1)intPage=1;
}
//以下是加载驱动程序
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(java.lang.ClassNotFoundException e){
System.err.println("opendb():"+e.getMessage());}
strCon="jdbc:odbc:db1";
sqlCon=DriverManager.getConnection(strCon);
sqlStmt=sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
strSql="select * from customer";
sqlRst=sqlStmt.executeQuery(strSql);
//系统指针直到最后一行
sqlRst.last();
//获得总的行数
intRowCount=sqlRst.getRow();
//计算总的叶数
intPageCount=(intRowCount+intPageSize-1)/intPageSize;
//对于大于总页数的页面,调整为最大页码
if(intPage>intPageCount)intPage=intPageCount;
%>
<HTML>
<HEAD>
<TITLE> test page </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<table border="1" width="100%" cellspacing="1" cellpadding="0" height="81">
<!--定义表头-->
<tr>
<td width="20" bgcolor="#ccffcc" height="10">name</td>
<td width="20" bgcolor="#ccffcc" height="10">cust_name</td>
<td width="20" bgcolor="#ccffcc" height="10">address</td>
</tr>
<%
if(intPageCount>0){
//移动指针导显示页的第一条记录上面
sqlRst.absolute((intPage-1)*intPageSize+1);
//显示当前的记录
i=0;
while(i<intPageSize&&!sqlRst.isAfterLast()){
%>
<tr bgcolor=#f2f2e6>
<td width="20" height="10"><%=sqlRst.getString(1)%></td>
<td width="20" height="10"><%=sqlRst.getString(2)%></td>
<td width="20" height="10"><%=sqlRst.getString(3)%></td>
</tr>
<%
//移动到下一条记录
sqlRst.next();
}
}
%>
</table>
<!--下面是定义翻页用的表单-->
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<form action="testpage.jsp" method="GET">
<td height="27" bgcolor="#99ffcc" align="right">
<%
//用于生成翻页的草连接
if(intPage!=1)
//不是第一页,生成。。。。。
{
out.println("<a href=testpage.jsp?page=1>第一页</a>");
out.println("<a href=testpage.jsp?page="+(intPage-1)+">上一页</a>");
}
if(intPage!=intPageCount)
//不是最后一页生成
{
out.println("<a href=testpage.jsp?page="+(intPage+1)+">下一页</a>");
out.println("<a href=testpage.jsp?page="+intPageCount+">最后一页</a>");
}
%> 输入页数:<input type="text" size="3" name="page">
<!--显示当前页数和总的页数-->
页数:<font color="#ff0000"><%=intPage%>/<%=intPageCount%></font>
</form>
</tr>
</table>
</BODY>
</HTML>
<%
sqlRst.close();
sqlStmt.close();
sqlCon.close();
%>
报以下错误
/cjjtlg/testpage.jsp:
Exception thrown on line '32' from page 'D:\\java\\JRun\\servers\\default\\cjjtlg\\testpage.jsp'.
java.sql.SQLException: [Microsoft][ODBC q¨ ¡h] *Ѱpn
ðv*šØ¤q¨
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6031)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6188)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:2458)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:320)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:163)
at java.sql.DriverManager.getConnection(DriverManager.java:517)
at java.sql.DriverManager.getConnection(DriverManager.java:199)
at jrun__testpage2ejspd._jspService(jrun__testpage2ejspd.java:73)
at allaire.jrun.jsp.HttpJSPServlet.service(../jsp/HttpJSPServlet.java:39)
at allaire.jrun.jsp.JSPServlet.service(../jsp/JSPServlet.java:228)
at allaire.jrun.jsp.JSPServlet.service(../jsp/JSPServlet.java:196)
at allaire.jrun.servlet.JRunSE.service(../servlet/JRunSE.java:1416)
at allaire.jrun.session.JRunSessionService.service(../session/JRunSessionService.java:1082)
at allaire.jrun.servlet.JRunSE.runServlet(../servlet/JRunSE.java:1270)
at allaire.jrun.servlet.JRunRequestDispatcher.forward(../servlet/JRunRequestDispatcher.java:89)
at allaire.jrun.servlet.JRunSE.service(../servlet/JRunSE.java:1552)
at allaire.jrun.servlet.JRunSE.service(../servlet/JRunSE.java:1542)
at allaire.jrun.servlet.JvmContext.dispatch(../servlet/JvmContext.java:364)
at allaire.jrun.http.WebEndpoint.run(../http/WebEndpoint.java:115)
at allaire.jrun.ThreadPool.run(../ThreadPool.java:272)
at allaire.jrun.WorkerThread.run(../WorkerThread.java:75)