2016-05-02 21 views
0

SQLクエリを渡そうとしていますが、「java.sql.SQLException:ResultSetが閉じられた後に操作が許可されません」というメッセージが表示されます。私はstackoverflowで同じ例外に基づいて他の会話を行っているが、まだ私は問題を理解していない。ここで結果セット関数で 'ResultSetが閉じています'

はコードです:ここ

Class.forName("com.mysql.jdbc.Driver").newInstance(); 
String query="SELECT candidate,pan from hcl_candidates where jngstat='Joined'"; 

statement=conn.createStatement(); 
resultset=statement.executeQuery(query); 

while(resultset.next()){ 

statement.executeUpdate("insert IGNORE into allinvoice  (candidate,pan,invdate,client) select candidate,pan,CURDATE(),'HCL' from hcl_candidates where jngstat='Joined'"); 
} 
} 

catch (SQLException ex) 
{ 
ex.printStackTrace(); 
out.println("Unable to connect to batabase."); 

} 

finally 
{ 
try 
{ 

if(statement!=null) 
{ 
statement.close(); 
} 
if(conn!=null){ 
conn.close(); 
} 

if(resultset!=null){ 
resultset.close(); 
} 
} 
catch (SQLException e) 
{ 

e.printStackTrace(); 
} 
} 

は完全なスタックトレースです:

java.sql.SQLException: Operation not allowed after ResultSet closed 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860) 
    at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:743) 
    at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6320) 
    at org.apache.jsp.hclimport_jsp._jspService(hclimport_jsp.java:92) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
+0

あなたのプログラムはブロックされていません。 – EJP

答えて

0

Statementを再実行すると、以前の結果セットが閉じられます。

ループが変化するものに依存しないループ内でステートメントを実行することは、あなたがここで何をしていると思い込んでいるのか分かりません。

NB SQLExceptionは、「接続できません」以外の多くのことを意味する可能性があります。

+0

ループを指摘してくれてありがとう、今それは動作..私はそれを削除するはずだったが、それは私の心をスキップしている必要があります:) – pradyu

-1

問題は、同じStatementオブジェクトにwhileループでexecuteUpdateを実行しています。これはStatement classの期待に反します。

PS:結果セット、Statement、Connectionを閉じる必要があります。

+0

こんにちは私は私のスタックトレースを追加しました...あなたが何かを知っている場合私に知らせてください – pradyu

+0

'while'ループは 'Statement'クラス'に違反しません。 – EJP

+0

そのようなwhileループではありません。私の意図は、同じ 'Statement'オブジェクトに対して' executeUpdate'を実行することが問題を引き起こしていたということでした。 Oracle Statementクラスのdocを参照してください。http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html – redoc

関連する問題