程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了与Statement对象的setFetchSize方法混淆大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决与Statement对象的setFetchSize方法混淆?

开发过程中遇到与Statement对象的setFetchSize方法混淆的问题如何解决?下面主要结合日常开发的经验,给出你关于与Statement对象的setFetchSize方法混淆的解决方法建议,希望对你解决与Statement对象的setFetchSize方法混淆有所启发或帮助; @H_519_2@mysqL驱动程序将Integer.min_value用作切换到流式结果集模式的信号。它不用作值。请参阅“结果集”下的文档。综上所述:

默认情况下,完全检索结果集并将其存储在内存中。您可以通过设置stmt.setFetchSize(Integer.min_value);(与只进,只读结果集结合)告诉驱动程序一次将结果流回一行。

因此,这非常特定于MysqL Connector / J驱动程序。

至于为什么关闭结果集需要花费很长时间,同样的文档也暗示了这一点:“必须先读取(或关闭)结果集中的所有行,然后才能对连接发出任何其他查询,否则将引发异常。“ 即关闭结果集将首先读取所有剩余的行,然后关闭结果集。而且由于现在读取行是逐行完成的,因此可能会花费很长时间。

看来(我没有测试它)有流播结果集可能会做你想要什么(不使用MysqL的限制条款)的替代,它涉及到配置性能usecursorFetch=true和使用情况进行了说明这里。

解决方法

我可以通过设置fetchSize为来解决此Integer.min_value问题,但是对此我有一些疑问

  1. 当我将fetchSize设置为10或其他正整数时,它不起作用,将其设置为Integer.min_value有效后,为什么呢?
  2. 如果我们设置负值,则它给非法值错误,但Integer.min_value就是-2147483648那么,为什么不给错误?
  3. 该表包含600万条记录,resultset在获取100或200条记录后我关闭了该表,这需要30-35秒的时间。
  4. 减少关闭时间的解决方案resultset

我想在此处添加更多内容,并已使用MySQL驱动程序对其进行了测试,并且可以接受,Integer.min_value 但是当我在SQL
Server中测试相同的代码时,它将给出错误The fetch size cAnnot be negative.;如果将其设置为10,则它可以工作,它也适用于Oracle。

大佬总结

以上是大佬教程为你收集整理的与Statement对象的setFetchSize方法混淆全部内容,希望文章能够帮你解决与Statement对象的setFetchSize方法混淆所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。