有没有办法从java ResultSet中检索已执行的查询?

有没有办法从java ResultSet中检索已执行的查询?,java,mysql,jdbc,resultset,Java,Mysql,Jdbc,Resultset,我创建了一个名为publicstaticresultset ExecuteSQLQuery(stringmyquery)的方法,现在在运行时,我需要从ResultSet检索执行的查询 我想知道是否可以从结果集检索执行的查询?简而言之:否 可以使用ResultSet中的getStatement。一些JDBC驱动程序可能会在语句的toString方法中公开查询,但即使是这种情况,也不应该依赖它 如果以后要使用,必须保存查询并保留它 您可以创建一个新类型的ResultSet,其中包含以下查询和返回:

我创建了一个名为
publicstaticresultset ExecuteSQLQuery(stringmyquery)
的方法,现在在运行时,我需要从ResultSet检索执行的查询


我想知道是否可以从结果集检索执行的查询?

简而言之:

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

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

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

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

public static ResultSetWithQuery ExecuteSQLQuery(String myQuery);

但是您正在将查询传递给方法。有什么问题?假设我使用的是查询生成器,所以我不知道查询内容。在我的应用程序中,有两个步骤:一个查询用来填充一些数据,然后是一个只在结果集上可见的动态搜索工具。这只是一个小的设计问题。谢谢Adam,在某些情况下,我在运行时有多个结果集,使用{public static HashTable myquerys}作为我的查询的存储和识别它们的方法是明智的吗?这可能行得通。您必须确保ResultSet正确地实现了hasCode和equals。或者可以在自定义对象中返回查询结果。我编辑了答案来说明这一点。