【问题标题】:How to get a list of running statements using JDBC如何使用 JDBC 获取正在运行的语句列表
【发布时间】:2016-10-05 13:38:22
【问题描述】:

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

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

【问题讨论】:

    标签: java jdbc


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-29
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      相关资源
      最近更新 更多