繁体   English   中英

如何使用JDBC获取正在运行的语句的列表

[英]How to get a list of running statements using JDBC

我正在使用DBCP和JDBC进行一些数据移动。 有时,当某些查询运行时间过长时,该应用程序可能会被终止; 但是,正如您所知,尽管该应用程序已被终止,但已发送到数据库的语句并未被终止。 有没有办法找到正在运行的查询列表并在杀死应用程序之前将其取消?

我知道您可以从数据库端获取正在运行的查询的列表,然后取消查询,但这不是我想要的方式。 我想找到由应用程序(连接到DB的指定用户帐户)通过JDBC发出的正在运行的查询(语句)列表,并使用statement.cancel()中止查询。

JDBC API不提供任何方式来获取所有运行或其他状态的Statement对象的列表。 但是,您可以自己跟踪所有Statement对象。 例如,您可以使用WeakHashMap<Statement, Statement>以避免内存/资源泄漏的方式保存现存的Statement对象。

另一种可能性是使用Connection.abort(...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM