【发布时间】:2019-10-04 17:59:16
【问题描述】:
try{
PreparedStatement ps = conn.prepareStatement("delete from table_1 where key =123"));
ps.execute();
ps = conn.prepareStatement("delete from table_2 where key =123"));
ps.execute();
}catch(Exception e){
......
}finally{
ps.close();
conn.close();
}
我的代码有一个问题,我实际上使用了 2 个准备好的语句,但只关闭了最后一个,在生产中运行我的代码时,oracle db session 有可能被阻塞,任何人都可以告诉我为什么没有关闭的 Preparedstatement 会导致数据库会话阻塞?我确实调用了连接关闭,并且会话阻塞时没有异常..
【问题讨论】:
-
没有关闭-->没有关闭
-
来自google,不关闭preparedStatement会导致游标泄漏,有人告诉我游标泄漏会导致oracle会话阻塞吗?
-
你想避免游标泄漏;你会用完游标。但是是什么让您认为会话被阻止了?
-
会话阻塞问题仅发生在我们仅添加以下代码 ps = conn.prepareStatement("delete from table_2 where key =123")); ps.execute();
-
“会话被阻塞”是什么意思?您的应用程序挂起?你的表中有外键吗?
标签: oracle session jdbc prepared-statement