有没有办法从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。或者可以在自定义对象中返回查询结果。我编辑了答案来说明这一点。