File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes JDBC and Relational Databases and the fly likes Statement is already closed error Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Databases » JDBC and Relational Databases
Bookmark "Statement is already closed error" Watch "Statement is already closed error" New topic

Statement is already closed error

Christopher De Castro

Joined: Feb 11, 2011
Posts: 6

I'm trying to get the output parameter of a stored procedure as in the below code. However, after calling callableStatement.execute(), the callableStatement object gets closed, causing the call to getInt() to throw an SQLException saying, "java.sql.SQLException: Statement has already been closed". I'd like to know what I need to look at for me to get this to work.

I'm fairly confident that the SP call is correct; calling it from an SQL editor causes it to return values in the output parameters. Could this be something in my Weblogic settings (I'm using a non-XA datasource defined in Weblogic 10.3)? Does anyone know how I should go about testing this?

Here is part of the code that I have. Eclipse debug mode shows that the statement is still open before the execute() method is called, and closed at the getInt() method.

Thanks in advance!
Avi Abrami
Ranch Hand

Joined: Oct 11, 2000
Posts: 1141

JDBC methods declare that they throw SQLException which is a checked exception and therefore your code must handle it.
So where is your error handling code?
What database are you using and what JDBC driver?
Perhaps your JDBC driver does not support "out" parameters?

Good Luck,
Mike Zal
Ranch Hand

Joined: May 04, 2011
Posts: 144

Where in your code do you close your Connection and Statement? Is it possible that your connection is closed when the statement executes? It's not an exact scenario match, but I have seen people getting error from trying to access a ResultSet after the callling Statement was closed.

Christopher De Castro

Joined: Feb 11, 2011
Posts: 6
Thanks for the replies. Apparently, it's a problem with my statement timeout property. The SP throws a runtime exception, and during the time while I'm checking my breakpoints, my statement times out and my debugger shows "The statement has already been closed" instead of the actual error.
I agree. Here's the link:
subject: Statement is already closed error
It's not a secret anymore!