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

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

最佳答案

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

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

关于java - 如何使用JDBC获取正在运行的语句的列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39875546/

10-12 00:34
查看更多