这是一个老问题,网上也有很多关于这个问题的原因和解决方法,一般都是说在循环里面使用PrepareStatement或ResultSet后没有及时关闭引起的。
我现在的问题是,我使用的是Sptring的Jdbctemplate来执行查询操作(我也看了Jdbctemplate的代码,甚至将源代码复制出来自己再添加输出信息,确定PerpareStatement确实是有关闭,奇怪的是似乎执行关闭的次数要少于实际执行查询的次数),所以我不能自己调用方法关闭PrepareStatement或ResultSet,那问题应该怎么解决呢?
附功能需求:
查询某些数据点(最大300个左右),在某个时间范围内(最大1年左右),哪一天没有数据。例如:查询300个点,在2013-04-10至2013-04-17日这10天之中,有多少是没有数据的,如果没有任何数据,则返回300*10=3000条数据,且这3000条数据必须有时间,如第1条的内容是“点A在2013-04-10没有数据”,第2条的内容是“点B在2013-04-10没有数据”...第XX条是“点A在2013-04-11没有数据”,以此类推。
上面这需求,除了将具体的时间赋值到SQL语句的查询条件中之外,没有想出其他方法。如果查询1年的时间范围,那就要执行360+条SQL语句,就会出现上面提到的错误。