Exception in thread sql main"main" java.sql.SQLException: Operation not allowed after ResultSet cl

Getting java.sql.SQLException: Operation not ... - Software Development | DaniWeb
Hello All,
I am getting the following error message when I try to execute my program as an executable jar on a remote system.The same program works perfectly fine on my local system:
Exception in thread "main" java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:794)
at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7078)
at cbr_beo_3_3.contentbased(cbr_beo_3_3.java:150)
at mainfunction.main(mainfunction.java:32)
Here is my code snippet: public void contentbased() throws Exception
//connecting to the data base
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con=DriverManager.getConnection("jdbc:mysql://mysql.cs.abc.edu:3306/dbname","username","password");
Statement stmt=con.createStatement();
Statement stmt1=con.createStatement();
Statement stmt2=con.createStatement();
//result sets for the training data...
//result set containing all rows in tas table
rs2_tas_train=stmt2.executeQuery("SELECT * FROM tas_");
//Iterating over the tas training data
//The exception is being thrown here.
while(rs2_tas_train.next())
} The mysql server version is 5.1.40 and the mysql-connector-java-bin.jar file version is 5.1.10.Please help me resolve this issue asap.
Edited 8 Years Ago
by nav33n: Added [code][/code] tags.
3Contributors 2Replies 3Views 8 YearsDiscussion Span
Last Post by masijade
Hello All,
I am getting the following error message when I try to execute my program as an executable jar on a remote system.The same program works perfectly fine on my local system:
Exception in thread "main" java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:794)
at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7078)
at cbr_beo_3_3.contentbased(cbr_beo_3_3.java:150)
at mainfunction.main(mainfunction.java:32)
Here is my code snippet: public void contentbased() throws Exception
//connecting to the data base
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con=DriverManager.getConnection("jdbc:mysql://mysql.cs.abc.edu:3306/dbname","username","password");
Statement stmt=con.createStatement();
Statement stmt1=con.createStatement();
Statement stmt2=con.createStatement();
//result sets for the training data...
//result set containing all rows in tas table
rs2_tas_train=stmt2.executeQuery("SELECT * FROM tas_");
//Iterating over the tas training data
//The exception is being thrown here.
while(rs2_tas_train.next())
} The mysql server version is 5.1.40 and the mysql-connector-java-bin.jar file version is 5.1.10.Please help me resolve this issue asap.
hi i have got the error too :X
i think it is because if u declare that result set instance as static or after it is pointing to null u are trying to access the result set
but i have learned that there are 2 types of result sets scrollable result set and unscrollable result set i think now u are using unsrollable result set
with scrollable result set we can bring back the pointer after moving it forward
still researching it try to google it hope this helps :-/
u can find some info in above link
and for example
Edited 8 Years Ago
by tizon: n/a
It might help to see what it is you are doing inside that while loop, but I will explain the most likely cause.
That being, performing an execute on a statement automatically closes all resultsets associated with that statement so, if you do something like this Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("sql");
while (rs.next()) {
s.executeUpdate("some other statement");
} the rs.next() will throw that error on the first iteration after the reuse of the statement (i.e. in the second iteration).
This topic has been dead for over six months.
Have something to contribute to this discussion?
Please be thoughtful, detailed and courteous, and
be sure to adhere to our .
Post your Reply Alt+S
- 3 replies
- 2 replies
- 3 replies
- 3 replies
- 2 replies
- 7 replies
- 11 replies
- 4 replies
- 6 replies
- 9 replies
- 3 replies
- 11 replies
- 2 replies
- 2 replies
- 4 replies
- 8 replies
- 3 replies
Hey guys, I have a little bit confused on below code and output Main
public class Main {
public static void main(String[] args) {
ClassA classA = new ClassA(); ...
if($_REQUEST['subview']=="add")
$title = mysqli_real_escape_string($db-&conn,$_POST['title']);
$cat_id = mysqli_real_escape_string($db-&conn,$_POST['category']);
$area = mysqli_real_escape_string($db-&conn,$_POST['area']);
$bedroom = mysqli_real_escape_string($db-&conn,$_POST['bedroom']);
$bathroom = mysqli_real_escape_string($db-&conn,$_POST['bathroom']);
$garage = mysqli_real_escape_string($db-&conn,$_POST['garage']);
$content=mysqli_real_escape_string($db-&conn,$_POST['text']);
$data = array("title"=&$title,
"cat_id"=&$cat_id,
"area"=&$area,
"bedroom"=&$bedroom,
"bathroom"=&$bathroom,
"garage"=&$garage,
"content"=&$content, ...
I create a project in vb.net 2010 sql server 2008r2 and crystal report 13.
i use this code for showing the report. Public Sub PrintSaleRInvoice()
Dim PrintSale As New ...博客分类:
详细错误信息如下:
org.springframework.jdbc.datasource.DataSourceUtils - [DefaultQuartzScheduler_Worker-2] ERROR org.springframework.jdbc.datasource.DataSourceUtils& - Could not close JDBC Connection
java.sql.SQLException: Already closed.
at org.apache.tomcat.dbcp.dbcp.PoolableConnection.close(PoolableConnection.java:114)
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:191)
at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:286)
at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:247)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:292)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:348)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:352)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:356)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:387)
at cn.sh.ideal.sendsms.dao.TimingSendSmsDao.getAllSmsReceive(TimingSendSmsDao.java:127)
at cn.sh.ideal.sendsms.service.TimingSendSmsService.timingSendSmsDay(TimingSendSmsService.java:117)
at cn.sh.ideal.sendsms.job.TimingSendSmsJob.timingSendSms(TimingSendSmsJob.java:49)
at sun.reflect.GeneratedMethodAccessor84.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:248)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:165)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:90)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
[secs]
04:15:30,746 - cn.sh.ideal.sendsms.job.TimingSendSmsJob - [DefaultQuartzScheduler_Worker-2] ERROR cn.sh.ideal.sendsms.job.TimingSendSmsJob& - (两小时执行一次)定时短信发送异常:
org.springframework.dao.DataAccessResourceFailureException: StatementC SQL [SELECT T.MOBILE mobile FROM T_REPORT_SMS_SET T]; Io 异常: C nested exception is java.sql.SQLException: Io 异常: Connection timed out
java.sql.SQLException: Io 异常: Connection timed out
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:817)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1039)
at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:841)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1134)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1274)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:333)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:282)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:348)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:352)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:356)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:387)
at cn.sh.ideal.sendsms.dao.TimingSendSmsDao.getAllSmsReceive(TimingSendSmsDao.java:127)
at cn.sh.ideal.sendsms.service.TimingSendSmsService.timingSendSmsDay(TimingSendSmsService.java:117)
at cn.sh.ideal.sendsms.job.TimingSendSmsJob.timingSendSms(TimingSendSmsJob.java:49)
at sun.reflect.GeneratedMethodAccessor84.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:248)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:165)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:90)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
原因:
数据源出现长时间没有使用中断后。出现Could not close JDBC Connection这种问题。
解决方案:
将testOnBorrow设置为true而validationQuery没有设置,或为空,或你给的不是一个select语句且没有数据返回。testOnBorrow也是白设。validationQuery这个的SQL语句一般查询dual表.常用的有SELECT 1 FROM DUA
修改后的tomcat JNDI配置如下:
&?xml version='1.0' encoding='utf-8'?&
&Context allowLinking="true"&
&&& &WatchedResource&WEB-INF/web.xml&/WatchedResource&
&Resource name="jdbc/tx" auth="Container" type="javax.sql.DataSource"
username="xxx"
password="xxx"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@xxx.xx.xx.xx:1521:xx"
maxActive="500"
maxIdle="10"
maxWait="120000"
validationQuery="SELECT 1 FROM DUAL"
/&
&/Context&
结论:
正式系统中使用的数据源最好是用上这个testOnBorrow+validationQuery。这样可以保证使用的每个数据源都不会出现长时间没有使用中断后。出现Could not close JDBC Connection这种问题。
浏览: 77242 次
来自: 上海
zhibaichuan 写道楼主没找到主要原因,其实是实体类的 ...
不一致也会导致这个错误,这是肯定的啊,这个我知道啊,我们的讨论 ...
楼主没找到主要原因,其实是实体类的字段大小写和if语句里的字段 ...
把标签去了,那就用不了动态语句了啊,不过还是感谢博主,省了我 ...
kjj 写道不是全注解啊,batis那块都是xml!!哦 这个 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'几个简单的例子让你读懂什么是JAVA的堆栈跟踪几个简单的例子让你读懂什么是JAVA的堆栈跟踪蜗牛学院百家号简单的来说,堆栈跟踪就是我们的程序在抛出异常时使用的方法调用列表。简单的例子通过问题中给出的示例,我们可以准确地确定应用程序中抛出异常的位置。我们来看看堆栈跟踪:Exception in thread "main" java.lang.NullPointerException
at com.example.myproject.Book.getTitle(Book.java:16)
at com.example.myproject.Author.getBookTitles(Author.java:25)
at com.example.myproject.Bootstrap.main(Bootstrap.java:14) 这是一个非常简单的异常-空指针异常,同样也是最简单的堆栈跟踪。如果我们从第一行“at ...”开始读,我们就可以知道错误发生在哪里。我们正在寻找的是最重要的方法调用,这是我们应用程序的一部分。在这种情况下,它是:at com.example.myproject.Book.getTitle(Book.java:16)要调试这个,我们可以打开Book.java并查看行16,如下:15
public String getTitle() {16
System.out.println(title.toString());1718
}这就表明某些东西空指针异常(可能title)在上面的代码中。我们再看一个异常链的例子有时应用程序会捕获异常并重新抛出这个异常来作为另一个异常的原因。通常如下: public void getBookIds(int id) {35
book.getId(id);
// this method it throws a NullPointerException on line 2237
} catch (NullPointerException e) {38
throw new IllegalStateException("A book has a null property", e)39
}这可能会给你一个堆栈跟踪,比如说:Exception in thread "main" java.lang.IllegalStateException: A book has a null property
at com.example.myproject.Author.getBookIds(Author.java:38)
at com.example.myproject.Bootstrap.main(Bootstrap.java:14)Caused by: java.lang.NullPointerException
at com.example.myproject.Book.getId(Book.java:22)
at com.example.myproject.Author.getBookIds(Author.java:36)
... 1 more这个和刚才例子最大的不同就是多了个“Caused by”。有时也会有多个“Caused by”部分。对于这种异常,你通常需要找到 “root cause”。在我们这一个例子中,它是:Caused by: java.lang.NullPointerException <-- root cause
at com.example.myproject.Book.getId(Book.java:22) <-- important line同样,在这个例子中,我们要去看看行22的Book.java,看看有什么可能影响NullPointerException的代码。
更让人头疼的是library库抛异常的例子通常来说堆栈跟踪其实比上述两个例子复杂得多。我们这里再分析一个很长的例子,但是这个例子包含了几个级别的链接异常: javax.servlet.ServletException: Something bad happened
at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:60)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.example.myproject.ExceptionHandlerFilter.doFilter(ExceptionHandlerFilter.java:28)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.example.myproject.OutputBufferFilter.doFilter(OutputBufferFilter.java:33)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)Caused by: com.example.myproject.MyProjectServletException
at com.example.myproject.MyServlet.doPost(MyServlet.java:169)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:30)
... 27 moreCaused by: org.hibernate.exception.ConstraintViolationException: could not insert: [com.example.myproject.MyEntity]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:64)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2329)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2822)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:705)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:693)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:689)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
at $Proxy19.save(Unknown Source)
at com.example.myproject.MyEntityService.save(MyEntityService.java:59) <-- relevant call (see notes below)
at com.example.myproject.MyServlet.doPost(MyServlet.java:164)
... 32 moreCaused by: java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]
at org.hsqldb.jdbc.Util.throwError(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown Source)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:57)
... 54 more在这个例子后面还有很多的” Caused by”。但是我们最关心的是寻找来自我们自己代码的错误,就是我们自己的com.example.myproject包中的任何东西。从第二个例子中,我们首先看看抛出的异常,它是:Caused by: java.sql.SQLException但是,所有的方法调用都是第三方库代码。所以我们将转到上面的“Caused by”,并寻找来自我们自己的代码的第一个方法调用,它是:at com.example.myproject.MyEntityService.save(MyEntityService.java:59)就像在前面的例子中,我们应该看看MyEntityService.java第59行,因为这是此错误的起源,那么通过代码的排查我们最终就能发现并解决相关问题。 挖矿搬砖不如IT码农,轻松转行还看蜗牛学院。蜗牛学院 专注于IT职业教育,轻松转行,简学易懂;免费试学,亲身体验;商业项目亲自操刀,与名企零距离接触;应届生就业薪资6000起,年薪10万不是事,涨幅绝比房价高。本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。蜗牛学院百家号最近更新:简介:全国首家移动互联网人才孵化基地作者最新文章相关文章java.sql.SQLException:&ORA-01460:转换请求无法实现或不合理解决
spring4.0 + Mybatis + Oracle 10.2.0.1.0
jar包: &ojdbc14-10.2.0.4.0.jar
问题描述:
当类型为CLOB的字段(我的是content)长度大于18000+后,sql报错:
java.sql.SQLException: ORA-01460:转换请求无法实现或不合理解决。截图如下:
问题分析:
1、可以排除程序或sql、驱动等出问题的可能。因为字段长度在18000的时候可以插入。只在字符串很长时出现。
2、java程序的默认中文字符集是UTF-8(此处字符集应该不影响插入),oracle字符集是GBK。因字符串中也有少量数字、字母,所以估计数据库一次可插入的数据在&18000*2。这与oracle中字符串可支持的最大长度32767隐约对应。初步估计是java把Mybatis里的Clob先处理成了字符串(虽然我声明的是CLob)。
尝试办法(用TypeHandler设置Clob数据):
1、试过用oracle.sql.CLOB设置Clob参数。--无效(原因:1、申请一个emptyClob时,有定位器,无db连接。设置数据时,要先生成db连接,要检测Clob是否为空,因此emptyClob无法设置数据。2、根据db连接创建Clob时,没有定位器,无法设置数据。
&(此处给ojdbc.14.jar的开发人员无数个白眼))
2、通过流设置Clob数据。--无效(原因: 不记得了...)
解决办法:
1、content字段超过16000时,先插入16000,再每次update追加1000,直到字段全部入库
虽然最终的办法是迂回的办法。但是我觉得解决问题就好。通过TypeHandler直接设置Clob,就是一大堆坑,怎么跳都会跳坑里。不过如果朋友们有好办法,欢迎提供!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 thread sql main 的文章

 

随机推荐