对了,JDBC2.1,2.0,1.0的文档都可以主要是给数据库厂商制作JDBC驱动的那份规范
暂时不要3.0的急谢谢

解决方案 »

  1.   

    A ResultSet object is automatically closed when the Statement object that generated it is closed, re-executed, or used to retrieve the next result from a sequence of multiple results. 谁帮我们真正地解释一下or used to retrieve the next result from a sequence of multiple results. 的含义?
    举例最好!
      

  2.   

    都说一个connection可以产生多个statement,(true)
    而其中每个statement都可以产生一个ResultSet,各个ResultSet相互不影响(false)那段英文的意思是:你用一个statement执行了一个query得到一个resultset,紧接着你又用这个statement执行了别的query或者update,那么最初的resultset就失效了。
      

  3.   

    from a sequence of multiple results
    其实是这一句不大明白从一个含有多个results的序列?
    多个results?什么含义呢难道是说象楼上说的:你用一个statement执行了一个query得到一个resultset,
    紧接着你又用这个statement执行了别的query?
    感觉表达的不是这样的含义
      

  4.   

    请问楼上:
    而其中每个statement都可以产生一个ResultSet,各个ResultSet相互不影响(false)哪儿写的这个是false?
      

  5.   

    used to retrieve the next result from a sequence of multiple results. 
    的意思是,一个statement执行出了多个resulteset,如果其中一个resulteset被调用了next(),其他的resultset就无效了.整段话的意思大致是一个statement同时只能care一个resultset.各个ResultSet相互不影响,我认为不对,原因就是那段英文啊
      

  6.   

    对不起,我有看了一下那段话"一个connection可以产生多个statement,而其中每个statement都可以产生一个ResultSet,各个ResultSet相互不影响",这句是对的,我没有仔细看,实在不好意思,脸红ing...
      

  7.   

    没关系!多谢捧场,呵呵!
    一个connection可以产生多个statement,而其中每个statement都可以产生一个ResultSet,各个ResultSet相互不影响
    不管是对是错,我都需要SUN定义的JDBC标准来判断,
    问题是我现在通过API的JAVADOC看到的文档:是以下三种情况会关闭ResultSet或使ResultSet失效
    1.A ResultSet object is automatically closed when the Statement object that generated it is closed, re-executed, or used to retrieve the next result from a sequence of multiple results. 
    2.显式地掉用close();
    3.垃圾回收jdbc接口规范规定了别的关闭ResultSet的方式吗?如果有,在哪儿写的?另外:
    如果观点是:一个connection可以产生多个statement,而其中每个statement都可以产生一个ResultSet,各个ResultSet相互不影响
    这个“各个ResultSet相互不影响”哪个文档有说明?我目前还没找到:(
      

  8.   

    抱歉,我的java没有研究的这么深入,文档我不知道sun放在什么地方了,我是根据自己的开发经验回答的。
      

  9.   

    used to retrieve the next result from a sequence of multiple results. 
    的意思是,一个statement执行出了多个resulteset,如果其中一个resulteset被调用了next(),其他的resultset就无效了.整段话的意思大致是一个statement同时只能care一个resultset.你这个翻译还是有疑问吧?我理解地是:从一个包含多个result的序列中取得下一个resut或者从一系列result中取得一个result,
    result不好理解,如果说result就是ResultSet,明显是不对的,一个Statement如何同时产生多个ResultSet而得到一系列的ResultSet呢不好意思,我要弄清楚used to retrieve the next result from a sequence of multiple results. 的真正含义。所以有点饶舌:(
      

  10.   

    感谢 chenyuan_tongji的支持,我去sun问也。我查遍了JDBC规范,都没有显式地说明:
    一个connection可以产生多个statement,而其中每个statement都可以产生一个ResultSet,各个ResultSet相互不影响
      

  11.   

    Only one ResultSet object per Statement object can be open at any point in time.
      

  12.   

    a sequence of multiple results是指在一个sql中产生的结果集!
    getMoreResultspublic boolean getMoreResults()
                           throws SQLException
    Moves to a Statement object's next result. It returns true if this result is a ResultSet object. This method also implicitly closes any current ResultSet object obtained with the method getResultSet. getResultSetpublic ResultSet getResultSet()
                           throws SQLException
    Returns the current result as a ResultSet object. This method should be called only once per result.Returns:the current result as a ResultSet object; null if the result is an update count or there are no more results
      

  13.   

    used to retrieve the next result from a sequence of multiple results. 
    重新从这个Statement 去取出其它的resultset 原来的resultset就自动关闭!
    因为一个Statement 可以产生几个有顺序的resultset 但要一次只能获得一个resultset
      

  14.   

    感谢!终于明白了含义!
    Normally you can ignore this unless you are (1) executing a stored procedure that you know may return multiple results or (2) you are dynamically executing an unknown SQL string第二种情况:动态执行SQL谁能举个例子?
    这是新的问题:)不过原来的问题:各个ResultSet相互不影响这个观点得不到支持
    //这段英文来自http://java.sun.com/j2se/1.4/docs/guide/jdbc/getstart/statement.html#996886
    Some DBMSs treat each statement in a stored procedure as a separate statement; others treat the entire procedure as one compound statement. This difference becomes important when auto-commit is enabled because it affects when the method commit is called. In the first case, each statement is individually committed; in the second, all are committed together. 我遇到一个实际问题是某数据库的JDBC执行:
    Statement st1 = conn.createStatement);
    Statement st2 = conn.createStatement();
    ResultSet rs1 = st1.exeQuery(("select * from table1");
    ResultSet rs2 = st2.exeQuery("select * from table2");
    这个时候在执行了ResultSet rs2 = st2.exeQuery("select * from table2");后rs1居然被关闭了,他们说他们的JDBC驱动符合JDBC2。0
    我现在要找文档证明他们不符合规范有点糊涂了,没找到JDBC文档说:各个ResultSet相互不影响