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

时间:2016-10-05 13:38:23

标签: java jdbc

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

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

1 个答案:

答案 0 :(得分:1)

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

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