`
zjx2388
  • 浏览: 1308148 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

对只转发结果集的无效操作: last--这样的错误

    博客分类:
  • J2SE
阅读更多

package dao;

import java.util.ArrayList;

import datebase.DBOperException;
import datebase.DBSource;
import java.sql.*;

import struts.form.TestForm;
import vo.userVO;
import tool.Page;

public class userDAO {

String sql = null;

//控制分页的属性
int page = 1;
int maxPage = 1;

//最大记录数量
private int maxRecordNumber=0;

public int getMaxPage() {
return maxPage;
}

public int getPage() {
return page;
}

public void setMaxPage(int maxPage) {
this.maxPage = maxPage;
}

public void setPage(int page) {
this.page = page;
}

/**
* @return maxRecordNumber
*/
public int getMaxRecordNumber() {
return maxRecordNumber;
}

/**
* @param maxRecordNumber 要设置的 maxRecordNumber
*/
public void setMaxRecordNumber(int maxRecordNumber) {
this.maxRecordNumber = maxRecordNumber;
}

/**
*
* @param testForm FORM对象
* @param requestpage 被请求的页
* @param pageNum 每页的数量(显示)
* @return
* @throws DBOperException
*/
public ArrayList selectUSERBASICINFO(TestForm testForm,int requestpage,int pageNum) throws DBOperException{

//广告信息列表
ArrayList adlist = new ArrayList();

// 需要的数据库对象
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;

try {
//查询条件
sql = "select userid,userpassword,phone,email from userbasicinfo where sex=?";
// 得到连接
conn = DBSource.getConnection();
//pstmt = conn.prepareStatement(sql);修改之前的语句
pstmt = conn.prepareStatement(sql,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);//修改过的语句

pstmt.setString(1,testForm.getSex());
System.out.println(testForm.getSex());

//执行查询
rs = pstmt.executeQuery();

//得到最大的数量
int pageNumber = pageNum;

boolean last = rs.last();//将cursor移到最后
if(last){
int rowNumber = rs.getRow();//获取符合的数据条数

//设置列表中的显示数量
maxRecordNumber = rowNumber;

maxPage = rowNumber/pageNumber;
if(rowNumber % pageNumber > 0){
maxPage++;
}

}

//如果输入的页大于最大的页面,则选择最大的页面
if(requestpage >= maxPage){
page = maxPage;
}else{
this.page = requestpage;
}

//把查询到的历史信息组合成历史信息对象,然后添加到全部历史对象中
if(page > 1 && last){
rs.absolute(pageNumber * (page - 1));
}else if(page == 1 && last){
rs.beforeFirst();//将cursor移到初始状态
}
//把查询到的历史信息组合成历史信息对象,然后添加到全部历史对象中
int currentPosition = 0;

//把查找到的全部广告基本信息对象放到集合对象中
while(rs.next()&& currentPosition < pageNumber && last){
//创建一个VO对象???????????到底放while外面还是放while里面
userVO uservo= newuserVO();

uservo.setEmail(rs.getString("email"));
uservo.setPhone(rs.getString("phone"));
uservo.setUserid(rs.getString("userid"));
uservo.setUserpassword(rs.getString("userpassword"));


//把属性加入列表
adlist.add(uservo);
currentPosition ++ ;

}

} catch (SQLException ex) {
try {
conn.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
ex.printStackTrace();
throw new DBOperException("数据库更新失败!");
} finally {
try {
// 关闭连接
rs.close();
pstmt.close();
conn.close();
} catch (SQLException ex1) {
ex1.printStackTrace();
}
}
//返回得到广告显示信息的列表
return adlist;
}
}

java.sql.SQLException: 对只转发结果集的无效操作: last
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.BaseResultSet.last(BaseResultSet.java:81)
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.last(DelegatingResultSet.java:328)
at dao.userDAO.selectUSERBASICINFO(userDAO.java:86)
at struts.action.TestAction.execute(TestAction.java:54)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at tool.EncodeFilter.doFilter(EncodeFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
2008-1-22 20:07:28 org.apache.struts.action.RequestProcessor processException
警告: Unhandled Exception thrown: class datebase.DBOperException
2008-1-22 20:07:28 org.apache.catalina.core.ApplicationContext log
信息: null


产生错误代码行:
pstmt = conn.prepareStatement(sql);
boolean last = rs.last();
将pstmt = conn.prepareStatement(sql);
改为:pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

ResultSet.TYPE_SCROLL_INSENSITIVE 双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
ResultSet.TYPE_SCROLL_SENSITIVE 双向滚动,并及时跟踪数据库里的更新,以便更改ResultSet中的数据。
ResultSet.CONCUR_READ_ONLY 只读取ResultSet 。
ResultSet.CONCUR_UPDATABLE 用ResultSet更新数据库 。

分享到:
评论

相关推荐

    jQuery中:last-child选择器用法实例

    主要介绍了jQuery中:last-child选择器用法,实例分析了:last-child选择器功能、定义及匹配父元素的最后一个子元素用法技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    HTML5&CSS3网页制作:结构化伪类选择器.pptx

    CSS3选择器--结构化伪类选择器;...:first-child和:last-child选择器;:nth-child(n)和:nth-last-child(n)选择器;:nth-of-type(n)和:nth-last-of-type(n)选择器;:empty选择器;:target选择器;总结;;THANKS

    jQuery中:only-child选择器用法实例

    本文实例讲述了jQuery中:only-child选择器用法。分享给大家供大家参考。...注意:这里有必要结合上面的代码再对概念进行一下说明。这里所说的父元素并不是li,而是li的父元素。很多人往往误以为是匹

    HTML5/CSS餐厅练习.rar

    orange.small:last-of-type,apple.small:last-of-type 是orange.samll和apple.small元素的最后一个元素 第二十五关 bento:empty bento元素里没有包括额外元素 第二十六关 apple:not(.small) apple里没有组是.small...

    seata-all-1.3.0-API文档-中英对照版.zip

    赠送jar包:seata-all-1.3.0.jar; 赠送原API文档:seata-all-1.3.0-javadoc.jar; 赠送源代码:seata-all-1.3.0-sources.jar; 赠送Maven依赖信息文件:seata-all-1.3.0.pom; 包含翻译后的API文档:seata-all-...

    org.vaadin.addons.dcharts-widget-0.10.0-dcharts-widget-0.10.0.jar

    org.vaadin.addons.dcharts-widget-0.10.0-dcharts-widget-0.10.0.jar

    memcached 1.2.6 1.2.5

    Last updated: 25 Jul 2009 Files libevent 1.4.12 Happily, libevent will now build out of the box on Windows (at least with VC2003 and VC2008, I haven't tested others). I don't like their projects ...

    用css完成根据子元素不同书写样式的方法

    &:last-child:nth-child(1) { // 相关样式 } } 很好理解:div下面即是最后一个元素也是第一个元素不就是只有一个子元素吗? 用css选择器匹配只有两个子元素 div{ &:nth-last-child(2):nth-child(2) { } } 依样...

    RDF-Generator-HTTP:RDF-Generator-HTTP 的只读发布历史

    my $ua = LWP::UserAgent-&gt;new;...use RDF::Trine qw(iri);my $g = RDF::Generator::HTTP-&gt;new(message =&gt; $response, graph =&gt; iri('http://example.org/graphname'), blacklist =&gt; ['Last-Modified', '

    CSerialPort串口类更新版2014-01-10

    ** LAST MODIFICATION 12-11-1997 ** ** AUTHOR Remon Spekreijse ** ** ************************************************************************************ ** author: mrlong date:2007-12-25 ** ** 改进...

    clj-containment-matchers:创建这个库是为了减轻匹配嵌套数据结构的痛苦

    牛肉(=为什么) 用 clojure.test 编写的这样的测试( deftest my-test ( is ( = { :first-name " John " :last-name " Smith " } { :first-name " Johnny " :last-name " Smith " }))) 将产生以下输出: FAIL in (my...

    队列调度代码matlab-esm-pmip-last-mil:esm-pmip-last-mil

    例如,要运行模型25年,请执行以下操作: payu run -n 25 注意:我们注意到某些模块会干扰git命令,例如matlab/R2018a 。 如果在安装过程中遇到问题,最好先进行module purge然后再重新启动。 了解payu payu旨在帮助...

    CSS3伪类选择器;例如:E:root、E:not等等

    E:last-child 最后一个元素 表示给指定元素的父元素中的最后一个指定元素设置一个统一的样式,E表示指定元素 E:nth-child(n) 表示给指定元素的第n个兄弟元素设置一个统一的样式,n可以取任意值,并且n为整数 E:nth...

    react-style-components:用于样式元素的 React 组件

    在制品。 向前走! React 样式组件 用于样式元素的 React 组件。 支持的组件 伪类 hover伪元素 任何元素的通用悬停样式 链接相关的伪类选择器 ... :nth-last-of-type(N) :nth-last-child(N) :only-of-type

    keil错误集V1.0.pdf

    开发资料\我的资料\keil错误集V1.0.pdf 一、 main.c(35): warning: #128-D: loop is not reachable from preceding code 原因,前面有一个while(1){ …….} 二、 main.c(54): warning: #1-D: last line of file ends...

    EurekaLog_7.5.0.0_Enterprise

    EurekaLog 7.5 (18-August-2016) 1)..Important: Installation layout was changed. All packages now have version suffix (e.g. EurekaLogCore240.bpl). No files are copied to \bin folder of IDE....

    HR人力资源数据集HR-comma-sep.csv

    人力资源分析数据集汇聚了对大量员工的信息数据统计,包括企业因素(如部门)、员工行为相关因素(如参与过项目数、每月工作时长、薪资水平等)、以及工作相关因素(如绩效评估、工伤事故),这些因素都有很好的分析...

    FastStone Capture 9.0 Shareware (Last Update: 2018-06-15)

    一款轻量级全功能的截屏软件。支持窗口,全屏,滚动区域截屏。也支持录屏。

    http last-modified字体头

    http last-modified字体头

Global site tag (gtag.js) - Google Analytics