oracle中不支持在url里指定字符集,有的数据库是可以的.

解决方案 »

  1.   

    sybase数据库下也有此问题......
      

  2.   

    还可以设置ResultSeet得最大长度也可以得
      

  3.   

    我不知道是什么原因,但我们用的库里有四百万条数据。我用下面的程序。

    int haha=0;
    while(rs.next()){
    System.out.println("**********process current row: "+haha++);
    citizen_id=rs.getString("idcard");
    name = rs.getString("NAME").trim();
    。。
    }

    执行结果如下:
    **********process current row: 1

    **********process current row: 4020130我也不清楚是怎么回事。
    学习中
      

  4.   


       我最近也在为海量数据的查询问题头痛,很多人同时查询超过100000条以上的数据,EJB方面要如何应付呢?除了数据库方面多建索引之外,在EJB这里有什么好的优化方法么?EJB没有缓存技术吧,通过数据库游标可以实现缓存么?   另外,大家帮我看看这个问题:
      
          http://expert.csdn.net/Expert/topic/2093/2093750.xml?temp=.6960871   楼主不好意思啊,  :)
      

  5.   

    to 无名:
      你用的是什么数据库? 哪种jdbc连接方式? 用哪种web服务器?谢谢!
      

  6.   

    oracle8i数据库,瘦客户端的联系方式。
    只是没用到web服务器。
    可能是这个原因才使得我做的操作可以一直执行下去吧。
    不太懂。
    继续学习。
      

  7.   

    to  feiyuegaoshan(飞跃) :
       你好,我现在的应用是必须把某张表的所有数据处理一遍,当然是要避免一次性把数据全部读入内存.所以试过用setfetch(),也试过定制sql语句让每次查询只返回10000条数据,结果是即使我只对数据库检索一次,检索从50000-60000这一万条数据也会报同样的错.不知您是否有解决方案,谢谢!
      

  8.   

    严重同意 feiyuegaoshan(飞跃) 的意见。但是鉴于“检索从50000-60000这一万条数据也会报同样的错”,那估计是数据库或者驱动的问题了。
    如果你再换小一点的返回条数,比如常规分页每页显示10-100行呢,会不会最终也出错?
    如果这样也出错的话那你跳过出错点而从后面开始检索呢?
    如果仍然出错建议检查数据完整性。是不是可能存在数据库页面文件错误?我提出的“是不是每个大表都出现如此情况?”不知道答案如何?
      

  9.   

    试过sybase/oracle两个数据库,两张超过5万条数据的表,都出现同样的问题.
    sybase用的是jconnect5.5版
    oracle用的是8.17自带的classes12.jar
    试过50000-60000,也试过60000-70000都是只能检索出几百,至多2千条数据就报错了.但小于50000以内的都没问题
      

  10.   

    你的业务逻辑,有可能放在存储过程内部来解决吗?
    通常都是可以的,
    如果可以,你用PL/SQL来实现你的代码。
    Oracle会自己处理内存分配问题。
    绝对不会出问题。
      

  11.   

    应用最后是要访问别人的数据库,sybase/oracle/sqlserver都有,不能随便在上面建存储过程,只能访问他表里的数据,比较痛苦~~~用jdbc解决不了么?
      

  12.   

    如果是这样,也可以解决。
    那只剩下一招了:(。
    JDBC。
      

  13.   

    to feiyuegaoshan(飞跃) :
       没听懂,怎么解决?
      

  14.   

    你不是要同时访问三个数据的不同部分吗?
    那就设置一个manager,是单实例的,专门用来协调对三者的访问,
    manager内部自己控制访问节奏。对三者进行分段访问。
    适当部分可以采取存储过程。
      

  15.   

    to feiyuegaoshan(飞跃) :
      回错贴了吧~~~~~
      

  16.   

    其实现在问题不在对数据的访问
    而是类似下面的地方
    while (rs.next())
    {
        i++;
        System.out.println("i="+String(i));
        //...
    }
    纯粹让它遍历一遍,就会报错.
    所以我想可能还是要从限制返回结果集条数方面下手,现在就是这个分段访问实现不了啊,用了oracle的rownum来限制依然报错,郁闷啊.......
      

  17.   

    其实客户的数据库对我的应用是透明的.我对客户数据库中的表是做什么用的一无所知,只是要求把指定的表遍历一遍,把所有数据都取出来,处理后保存成文件格式.所有sql语句很简单: select * from table
    我所能想到的分段访问只有上面写的"select *  from ( select a.*, rownum rnum  from ( select * from "+ DB_Table +") a where rownum <= ? )  where rnum >= ? ";这种了,但是结果也不成功.所以我觉得和业务逻辑关系不大,就是把任意一张表的所有数据取出来而已.
      

  18.   

    有木有qq,msn之类的?  请教一哈?
      

  19.   

    我也想分段读表啊
    一个思路就是有什么通用的技术可以限定每次返回的条数
    另一个思路就是特定数据库用特定sql语句来限定返回条数.第1个思路没找到方案
    第2个用oracle的rownum来限定起始和截至条数,这样可以限定每次返回的总条数.但感觉它还是每次把整个表的数据都放到jvm中了,然后再取出相应的结果集,所以结果还是导致溢出.用特定数据库的sql语句限定本来已经是下策了,因为这样我还得对各种数据库都实现相应的sql语句才能让应用跨数据库.我比较奇怪的是,大家用了这么久了,从来没出现过对超大结果集遍历的需求么?
      

  20.   

    对超大结果集遍历好多都是没有意义的事,如果是统计,可以用存储过程,如果是浏览,用分页就可以解决,使用odbc不会溢出,我做计费时一次读上千万条记录都没有事
      

  21.   

    result只能取前几万条的数据是不可思议的。
    按照你的结果可能是你的数据库数据问题:
    总是在固定的地方报出这种错误,查看一下报错误的地方数据库里的数据。
    看有没有特殊的汉字,例如一些生辟的汉字(或者不支持的字符),
    有可能是jdk或者jdbc还不支持的。
    如果是这样那试着升级你的jdk或者jdbc包试试。
      

  22.   

    to alanfan(小樊):
       我的应用必须是对超大结果集遍历.即使是你所说的浏览,分页到最后也同样会出问题.to  q_starry(秦) :
       你所用的数据库? 结果集数量?  sql语法?
       检查过不是特定地方出错,是溢出的原因.jdk是最新的,jdbc也是......
      

  23.   

    不知道各位有没有用过pb,在里面查询的时候无论多大的数据量好象都没问题
    我也碰到过楼主说说的情况,但几次的原因都是数据有问题,是其中的某个字段存在全角和半角的问题,当时我也是头疼死了,用sqlplus等其它工具查询都没问题,但用thin jdbc一连就报楼主那种错误,去分析一下吧,看看行不行