gpt4 book ai didi

java - 有没有任何工具或技术可以识别打开的结果集

转载 作者:行者123 更新时间:2023-12-02 13:40:21 25 4
gpt4 key购买 nike

在使用 SQLIte 的 Java 应用程序上下文中为了保存数据,我正在使用 Zentus JDBC 驱动程序。因此我使用 java.sql包访问我的数据库。

我面临一些奇怪的问题(在同一数据库上有多个 Connection 对象的环境中)问题,我很确定我的问题来自非封闭的 ResultSet。

是否有任何工具或技术可以让我找到在源代码中查找这些非封闭对象的位置?

编辑 可能正在使用AspectJ ??

最佳答案

看起来某个方面可能会有帮助。

如何将返回结果集的方法包装在方面中。像这样的东西:

execution(public java.sql.ResultSet+ java.sql.Statement+.*(..))

另一个方面可以监视 ResultSet 上的 close 方法。也许:

execution(public * java.sql.ResultSet.close())

第一个方面将在每个 ResultSet 返回时创建一个新的 Exception 对象,并将其存储在某个静态 Map 中,使用 ResultSet 的哈希值作为键。第二个方面,在关闭结果集时,将使用相同的哈希码作为键从映射中删除异常。在任何时候,映射都应该为每个打开的 ResultSet 有一个异常实例。从异常中,您可以获取堆栈跟踪以查看打开 ResultSet 的位置。

您也许可以存储一个更大的对象,其中包括异常和一些其他上下文信息;创建 ResultSet 的时间等。

关于java - 有没有任何工具或技术可以识别打开的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4086758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com