java preparedstatement 关闭_java - 如果基础连接已关闭,为什么isClosed()方法对PreparedStatements不返回true? - 堆栈内存溢出...
就像標(biāo)題所說的那樣,我想知道為什么準(zhǔn)備好的語句.isClosed()方法在關(guān)閉基礎(chǔ)流(使用JDBC)后將返回false。
public void someTest() throws SQLException, InterruptedException {
Connection conn = DBHelper.newConnection();
PreparedStatement statement = conn.prepareCall(CLEANUP_DELETE);
conn.close();
System.out.println(statement.isClosed());
Thread.sleep(1000);
System.out.println(statement.isClosed());
}
產(chǎn)量
false
false
但是,如果您嘗試調(diào)用set方法或execute,則會(huì)得到以下信息:
java.sql.SQLException: org.apache.commons.dbcp.DelegatingCallableStatement with address: "SQLServerCallableStatement:32" is closed.
at org.apache.commons.dbcp.DelegatingStatement.checkOpen(DelegatingStatement.java:137)
at org.apache.commons.dbcp.DelegatingPreparedStatement.setInt(DelegatingPreparedStatement.java:120)
at org.apache.commons.dbcp.DelegatingPreparedStatement.setInt(DelegatingPreparedStatement.java:120)
at com.ipti.ptl.common.messagetable.MessageHandlerTest.someTest(MessageHandlerTest.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606) .....
總結(jié)
以上是生活随笔為你收集整理的java preparedstatement 关闭_java - 如果基础连接已关闭,为什么isClosed()方法对PreparedStatements不返回true? - 堆栈内存溢出...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工作后多久可以整租房子?
- 下一篇: 在大城市租房,什么时候才能实现“整租自由