用JDBC连接Oracle数据库,检索出60万的数据,读出一条数据,按一定的格式写入文件中,如此循环的读写,但到了20多万的时候,就不读写了,文件大小不变了。但程序未终了。请问ResultSet  有没有选择数据行的限制??除了以上的方法,还有其他的方法吗??
谢谢!!

解决方案 »

  1.   

    其实你可以想想办法,不要一次性从数据库里查询那么多的记录,分开查,写文件的时候用append的方式写。
    另外可以做一些配置性的工作,记录当前写到哪条记录了,万一程序出错了,可以从上次的记录开始。
      

  2.   

    为何不这样
    ResultSet->List->String->File
      

  3.   

    那你该问问文件有没有数据限制,最起码execl对于写入的行书是有限制
    还有你这60W循环着写,你不觉得效率有问题吗?
      

  4.   

    最初的方法就是用victoryzll 说的方法,但是在客户的机器上内存溢出了,在我的机器上就如上所述了像死循环一样。文件大小没有限制,是一般的文本文件。
    读60W的纪录:想了两种方法。一种就是上面那种了。另一种就是读出一条写文件,再读写。不知道还有没有其他的方法,有知道的请指教下。谢谢了。看看了API,试了试farandfaraway 说的方法,生成文件了,谢谢了。只是有点不明白的是:不知道statement有没有默认值。按照API说的,如果超出限制的行数,就撤销。是不是这个意思:假设默认值为80,检索出100条记录,
    那20条记录就取不到。但按原来的方法,取到20W多时,要等待很长的时间才能取一些数据,再等待,再取。不明白是什么原因。
    看看还有更好的方法没,没有的话,明天结贴。