各位老大:
请问在java中如何才能将select后得到的结果集高效地写入文件,我现在是用rs.getXXX取一条记录里的相关属性值,在将从一条记录里选出来的属性值赋值给一个String result,然后就将result写入文件。本来打算定义一个String类的数组,将结果集放入,一次性写入文件。但又不知是否可行,如何操作,望各位高手指教!!!

解决方案 »

  1.   

    肯定不能用循环一条条写入文件了,应该是可以的,把String换成可变长String 类
      

  2.   

    那你定义一个数组,每取出一条结果,将结果放入数组。当所有的结果都取出来之后在将再将数组写入文件也行啊。冒失如果要定义数组的length的话,要先得到你的结果集的大小。
      

  3.   

    我现在就是在while(rs.next){}循环里一条条写的啊~
      

  4.   

    kaleon(为人要厚道):
    谢谢啊!但如果数据项很多的话,要全部select完得到count才写入数组,再写入文件,那不是很慢?
      

  5.   

    用BufferedWriter写效率应该会高一点
      

  6.   

    老大,你又来了啊,呵呵。
    我可以定义一个String类的数组,再将rs的内容一条条地放入数组再一次性输出么?只是java中定义数组是不是一定要指明大小的啊?
      

  7.   

    你可以用map来放入查询的所以记录,然后再写到文件中,那样在内存中操作应该快点
    建议!!!
      

  8.   

    不好意思,请问map是~~~
    我是菜鸟,实在不知道。汗~
      

  9.   

    to:zhengjing01(百事可乐)
    为什么用map会快?
    to:楼主
    map存的是key-value的pair
      

  10.   

    使用map会快的主要原因是内存映射将自己的内容映到到计算机中虚拟内存区域,用户可以在无须对物理文件本身执行任何显示文件读写操作的情况下直接引用或更新数据。
      

  11.   

    to believefym(暮色,miss,迷失,miss) :
    老大,你建议用BufferedWriter,我现在是建立了一个String类的数组,把记录集存在数组中,但是才发现BufferedWriter里没有write方法是可以将数组写入文件的啊。请问有什么办法吗?
    或者在java类库中不用BufferedWriter,用其他的类可以实现我的需求么?
      

  12.   

    还有个问题,我在数据库里select之后所得到的结果集的总数count怎么取出来呢?ResultSet对象里好像也没有相应的方法啊。
    我是这样的:
    Statement st=null;
    int count1;
    ResultSet rscount1=null;rscount1=st.executeQuery("select count(*) from tb");
    count1=rscount1.getInt("count(*)");
    不知道行不行的
      

  13.   

    select count(*) as c ...
    ...
    count1 = rscount1.getInt("c")
      

  14.   

    谢谢老大,那个取count我已经解决了,就是还有那个Buffered类不能用write方法写数组的问题,不知怎么解决呢?谢谢!
      

  15.   

    to believefym(暮色,miss,迷失,miss) :
    老大,我在用BufferedWriter时用一个for循环将数组中的字符串一条条地取出,这样就可以解决我的问题了吧?
      

  16.   

    取数据的时候扔到Vector里,直接用ObjectOutputStream写这个Vector就可以了.