3

我有一个 GUI,它允许用户运行长时间运行的查询。有时,用户会后悔运行查询并想取消它们。查询是使用 iBATIS 针对 Oracle 数据库运行的,我知道 java.sql.Statement 接口定义了一个取消方法,该方法可能由驱动程序实现,也可能不实现。所以我的问题是,是否可以使用 iBATIS 调用此方法来取消查询(给定正确的驱动程序),或者是否有任何其他方式中止正在进行的长时间运行的查询。

4

1 回答 1

2

好吧,
我想一旦到达数据库服务器,取消它确实是一个“特定于数据库供应商”的问题。
如果您的要求是取消查询,
那么当涉及到您的应用程序时
(即 - 如果它到达 Oracle DB 服务器并在那里运行,那么您很好,只要您不会得到结果),请考虑使用Future具有取消方法的接口。
您可以提交一个“可调用”来运行您的查询,它将返回一个正确的类型对象,它是一个实现。
如果您需要中止 - 只需使用未来对象的“取消”方法。您还可以使用“isCanceled”检查提交是否被取消,并对您的代码进行适当的处​​理。

于 2013-02-04T07:37:56.587 回答