如何故意延迟jdbc preparedStatement的executeQuery()?

时间:2017-07-27 05:40:25

标签: java jdbc oracle11g timeout

在Java API文档中提到Statement接口具有setQueryTimeOut方法。我确实在PreparedStatement中使用它。 现在不幸的是,我无法确认它确实有效。 我把它设置为1s,这是最小的,如下所示:

pstmt = connection.prepareStatement(sqlQuery);
pstmt.setString(1, age);
pstmt.setQueryTimeout(1);
resultSet = pstmt.executeQuery();

查询很简单根据年龄从视图中选择查询。 但是Db响应变得更好并且查询的执行在500ms内完成。如何故意延迟查询的执行,以便捕获将由setQueryTimeOut方法抛出的SQLException?

1 个答案:

答案 0 :(得分:0)

您可以通过TimeUnit类暂停,java.util.concurrent package

TimeUnit.SECONDS.sleep(1);

睡一秒或

TimeUnit.MINUTES.sleep(1);

睡一会儿。

以这种方式实施

pstmt = connection.prepareStatement(sqlQuery);
pstmt.setString(1, age);
TimeUnit.MINUTES.sleep(1);
resultSet = pstmt.executeQuery();

在精细记录睡眠方法抛出InterruptedException异常,所以你必须处理它。

如果您不想要 TimeUnit类的开销,只需在代码中以下面的方式调用Thead.sleep(long)。

pstmt = connection.prepareStatement(sqlQuery);
pstmt.setString(1, age);
Thread.sleep(60);
resultSet = pstmt.executeQuery();

但是你必须要照顾InterruptedException睡眠方法抛出的东西。