我用的oracle8,不会出现这样的问题阿。

解决方案 »

  1.   

    这种问题倒没有碰到过
    会不会是系统在同步更新中?
    要不你这样试试
    select count(*) from tablename
    先在sqlplus里面执行这个语句,然后通过java读取看看,不要使用next,看看两者结果对不对?
    如果对的话,再试试正常的,说不定是驱动里面的游标问题,应该不会阿,我用的就是oralce官方网站下的驱动阿,不过我的是oracle 8.1.5
      

  2.   

    第一、系统不会在同步更新。因为整个数据库只有我一个人在select:)
    第二、我比较了jdbc出来的和sqlplus里面得出来的结果,的确是少了不少纪录。我也仔细比较了jdbc没有选出来的东西,和其他能够选出来的没有区别啊:(
    第三、我们是不是应该绝对相信oracle给的驱动啊:)呵呵,能不能请咖啡兄试一下?找个一个4000条记录左右的表,select一下,然后看看会不会有这个问题:)我是用rs.next()的
    应该和大家用的一样吧:)呵呵,我在想,会不会记录数太多,而数据库没有反应过来?呵呵,虽然exec()后看起来是到了rs里面,但是试验以后我觉得事实上jdbc是在每次next()的时候去取数据的。这样就数据丢失的可能了:)(瞎猜的)呵呵,我正在考虑每次取一部分试试呢:)这样就不大了吧:)
    可恶的是jdbc没有获得总共row数的函数,呵呵,也是侧面证实了我的推断吧
      

  3.   

    别告诉我,是你的where条件不同啊,
      

  4.   

    哈哈,cat仔细的照了照镜子,发现自己好像还有没有弱智到这个地步:)
    放心啦,一来偶没有加where,二来偶是将sqlstring从程序的日志里copy出来粘贴到sqlplus里面运行的:)
    嘻嘻,但愿ms的剪贴板不会出问题:)
      

  5.   

    呵呵,在oracle的站点上查了半天,没查到什么,倒是有了一个新想法:
    偶用的数据库是7.3.2,jdbc是7.3。4
    JDBC 7.3.4 drivers can talk to RDBMS 7.3.4. 
    JDBC 8.0.4 drivers can talk to RDBMS 8.0.4 and 7.3.4. 
    JDBC 8.0.5 drivers can talk to RDBMS 8.0.5, 8.0.4 and 7.3.4. 
    JDBC 8.0.6 drivers can talk to RDBMS 8.0.6, 8.0.5, 8.0.4 and 7.3.4. 
    JDBC 8.1.5 drivers can talk to RDBMS 8.1.5, 8.0.6, 8.0.5, 8.0.4 and 7.3.4. 
    JDBC 8.1.6 drivers can talk to RDBMS 8.1.6, 8.1.5, 8.0.6, 8.0.5, 8.0.4 and 7.3.4. 
    JDBC 8.1.7 drivers can talk to RDBMS 9.0.1, 8.1.7, 8.1.6, 8.1.5, 8.0.6, 8.0.5, 8.0.4 and 7.3.4. Note that there is a known bug (#1725012) when using JDBC 8.1.7 thin driver to connect to a 9.0.1 RDBMS - applying the JDBC patch solves this known bug. 
    JDBC 9.0.1 drivers can talk to RDBMS 9.0.1, 8.1.7, 8.1.6, 8.1.5, 8.0.6, 8.0.5, 8.0.4 and 7.3.4. 
    嘻嘻,偶明天用9.0.1试试:)
    保不准是jdbc的错误呢:)
      

  6.   

    你可以用last() + getRow()来得到ResultSet中返回的纪录总数(当然,前提是你用的jdbc支持游标滚动,而且要把Statement的参数设为支持游标滚动的):
    rs.last();
    int count = rs.getRow();
      

  7.   

    西西,不好意思啊,记得oracle7.3.4的jdbc不支持游标滚动:)
    再说了,如果要知道有几条,next()到底不就知道了阿:)
    要解决这个问题的关键是要理解或者说明jdbc的运行机理。就是connect的时候做了什么,exec的时候做了什么,next的时候做了什么:)