【问题标题】:Is there any way to retrieve the executed query from java ResultSet?有没有办法从 java ResultSet 中检索执行的查询?
【发布时间】:2017-03-31 10:12:17
【问题描述】:

我创建了一个名为 public static ResultSet ExecuteSQLQuery(String myQuery) 的方法,现在在运行时我需要从 ResultSet 中检索已执行的查询。

我想知道是否可以从 ResultSet 中检索执行的查询?

【问题讨论】:

  • 但是...您正在将查询传递给方法。有什么问题?
  • 假设我正在使用查询生成器,所以我不知道查询内容。在我的应用程序中,有两个步骤:一个查询用于填充一些数据,然后是一个动态搜索工具,它只在 ResultSet 上可见。
  • 所以修复它。这只是一个小设计问题。

标签: java mysql jdbc resultset


【解决方案1】:

简而言之:

也许可以使用 ResultSet 中的getStatement。一些 JDBC 驱动程序可能会在语句的 toString 方法中公开查询,但即使是这种情况,也不应该依赖它。

如果您想以后使用它,您必须保存查询并保留它。

您可以创建一种新类型的 ResultSet,其中包含查询并返回:

public class ResultSetWithQuery extends ResultSet {
    private String query
    ...
}

public static ResultSetWithQuery ExecuteSQLQuery(String myQuery);

【讨论】:

  • 谢谢亚当,在某些情况下,我在运行时有多个结果集,正在使用 {public static HashTable myQueries } 作为我的查询的存储和一种方式认出他们?
  • 这可能行得通。您必须确保 ResultSet 正确实现 hasCode 和 equals 。或者,您可以在自定义对象中返回带有结果的查询。我编辑了答案以表明这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
  • 2016-06-07
  • 2014-04-10
相关资源
最近更新 更多