Jdbc连接关闭和preparedstatement关闭

Job*_*ith 5 java database-connection jdbc prepared-statement

大家好,我知道这是一个古老的问题,但今天只是好奇.我们知道connection.close也将关闭preparedStatement(如果我错了,请纠正我).但是如果我关闭连接然后关闭preparedStatement会怎样

conn.close();
ps.close();
Run Code Online (Sandbox Code Playgroud)

我会得到一个nullpointer异常吗?

有人说是取决于你的jvm速度.有时ps.close()会先跑,然后先关闭conn.close完成他的工作,所以你不会得到nullpointer.

为了测试它,我修改了代码

conn.close();
Thread.sleep(5000);//I give 5s to conn.close to finish his work. should be enough
ps.close();
Run Code Online (Sandbox Code Playgroud)

但我没有得到nullpointer.

所以我的问题是这里发生的事情,如果我首先关闭conn然后ps.

谢谢大家.

Dun*_*nes 5

JavaDoc forStatement.close()状态:

closeStatement已经关闭的对象上调用该方法无效。

我建议这意味着如果您的语句已经通过调用Connection.close().