JSP错误:ResultSet.last() 调用有问题

Knuuy 2011-07-28 07:16:58

<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.lang.Integer" %>
<%@ page import="java.lang.Math" %>
<%!
//JDBC分页导航函数
public String writeNavigation(ResultSet p_rs,int p_pageSize,int p_pageIndex,int p_totleRS,String p_strURL){

//定义当前分页开头记录和结束记录号
int recordHead, recordLast;
//获得分页数
int pageCount = (int)Math.ceil((double)p_totleRS/p_pageSize);

//通过计算获得分页开头记录和结束记录号
recordHead = 1;
if (p_pageIndex > 1){
recordHead = p_pageSize * (p_pageIndex-1) + 1;
}
if (p_pageIndex >= pageCount){
recordLast = p_totleRS;
} else {
recordLast = p_pageSize * p_pageIndex;
}
//定义一个字符串用于函数返回值
String result = "";
result = result + "<table width=\"600\"><tr><td colspan=\"3\">";
result = result + "第" + recordHead + "-" + recordLast + "条,共" + p_totleRS + "条,每页显示" + p_pageSize + "条</td></tr>";

//定义翻页变量
String prevPage = String.valueOf(p_pageIndex - 1);
String nextPage = String.valueOf(p_pageIndex + 1);

//判断输入的URL是否已经包含有的查询变量
if (p_strURL.indexOf("?") == -1){
p_strURL = p_strURL + "?";
} else {
p_strURL = p_strURL + "&";
}
//定义导航条
String firstPage = "<a href=\"" + p_strURL + "page=1\">[首页]</a> ";
String lastPage = "<a href=\"" + p_strURL + "page=" + pageCount + "\">[尾页]</a>";
if (p_pageIndex > 1){
prevPage = "<a href=\"" + p_strURL + "page=" + prevPage + "\">[上页]</a> ";
}
if (p_pageIndex < pageCount){
nextPage = "<a href=\"" + p_strURL + "page=" + nextPage + "\">[下页]</a> ";
}
if (p_pageIndex == pageCount){
nextPage = "[下页] ";
lastPage = "[尾页]";
}
if (p_pageIndex <= 1){
prevPage = "[上页] ";
firstPage = "[首页] ";
}
result = result + "<tr align=\"right\"><form name=\"form\" method=\"post\" action=\"" + p_strURL + "\"><td align=\"left\">";
result = result + "共" + pageCount + "页 " + "目前第"+ p_pageIndex +"页</td><td>";
result = result + " 到第<input type=\"text\" name=\"page\" size=\"3\" style=\"height:16px; margin-bottom:2px;\" />页<input type=\"submit\" value=\"GO\" style=\"height:18px; margin-bottom:1px;\" />";
result = result + "</td><td>" + firstPage + prevPage + nextPage + lastPage + "</td></form></tr></table>";

return result;
}

//JDBC分页数据函数
private String writePagedRS(ResultSet p_rs, int p_pageSize, int p_pageIndex) throws java.sql.SQLException{
//定义一个字符串用于函数返回值
String result = "";
result = result + "<table><tr bgcolor=\"#637E94\">";
//写结果集字段名
int columnSize = p_rs.getMetaData().getColumnCount();
for (int j = 1; j <= columnSize; j++) {
result = result + "<th width=\"150\">"+ p_rs.getMetaData().getColumnName(j) + "</th>";
}
result = result + "</tr>";

//写结果集数据
int id = 0;
p_rs.absolute((p_pageIndex-1)*p_pageSize);
while (p_rs.next() && id < p_pageSize){
id++;
if ((id % 2)==0){
result = result + "<tr bgcolor=\"#E3EAEF\">";
} else {
result = result + "<tr bgcolor=\"#ffffff\">";
}
for (int j = 1; j <= columnSize; j++) {
result = result + "<td>"+ p_rs.getObject(j) + "</td>";
}
result = result + "</tr>";
}
result = result + "</table>";

return result;
}
%>
<%
//pageSize表示每页的记录数
//strURL表示处理分页结果集的文件路径
int pageSize = 3; //3代表每页显示3条记录
int pageCount; //页数
String strSQL = "SELECT firstName,lastName,EmpType,age FROM employees";
String strURL = "displayByPage.jsp";

Connection myConn = null;
Statement myStatement = null;
ResultSet myResultSet = null;
try{
Driver myDriver = (Driver)Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
} catch (ClassNotFoundException e) {
out.println("数据库驱动程序出错:" + e.getMessage());
}
try{
myConn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=myDatabase;user=sa;password=verysecret");
//注意这里游标的设置
myStatement = myConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
myResultSet = myStatement.executeQuery("SELECT firstName,lastName,EmpType,age FROM employees");
} catch(SQLException e) {
out.println("数据库出错:" + e.getMessage());
}
if (!myResultSet.last()){
out.print("没有记录!");
} else {
//获得当前要显示的结果集分页码
int pageIndex = 1;
try{
pageIndex = Integer.parseInt(request.getParameter("page"));
} catch (Exception e) {
out.print("page出错:" + e);
pageIndex = 1;
}

myResultSet.last();
int totleRS = myResultSet.getRow();//总记录数
pageCount = (int)Math.ceil((double)totleRS/pageSize); //分页数
if (pageIndex == 1 || pageIndex < 1){
pageIndex = 1;
} else if (pageIndex > pageCount){
pageIndex = pageCount;
}
//写分页数据
out.print(writePagedRS(myResultSet, pageSize, pageIndex));
//写分页导航信息
out.print(writeNavigation(myResultSet, pageSize, pageIndex, totleRS, strURL));
}
%>
<%
//最后,显式的关闭对象
myResultSet.close();
myResultSet = null;
myStatement.close();
myStatement = null;
myConn.close();
myConn = null;
%>


显示的错误
org.apache.jasper.JasperException: An exception occurred processing JSP page /root/09/9-6.jsp at line 120

117: } catch(SQLException e) {
118: out.println("数据库出错:" + e.getMessage());
119: }
120: if (!myResultSet.last()){
121: out.print("没有记录!");
122: } else {
123: //获得当前要显示的结果集分页码


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:519)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:428)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

之前写的程序一遇到ResultSet.last(),next(),first()等这些方法时总是有这样的错误org.apache.jasper.JasperException: An exception occurred processing JSP page /root/09/9-6.jsp at line XX对应的行数。是不是软件方面配置有问题啊
...全文
221 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
五哥 2011-07-29
  • 打赏
  • 举报
回复
跟着楼上学习 ,这是经验啊
zn85600301 2011-07-29
  • 打赏
  • 举报
回复
myResultSet.last() 会抛出异常 放在try中
Knuuy 2011-07-29
  • 打赏
  • 举报
回复
原来是sql的端口没有打开知道原因了

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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