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. 的含义? 举例最好!
from a sequence of multiple results 其实是这一句不大明白从一个含有多个results的序列? 多个results?什么含义呢难道是说象楼上说的:你用一个statement执行了一个query得到一个resultset, 紧接着你又用这个statement执行了别的query? 感觉表达的不是这样的含义
used to retrieve the next result from a sequence of multiple results. 的意思是,一个statement执行出了多个resulteset,如果其中一个resulteset被调用了next(),其他的resultset就无效了.整段话的意思大致是一个statement同时只能care一个resultset.各个ResultSet相互不影响,我认为不对,原因就是那段英文啊
没关系!多谢捧场,呵呵! 一个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相互不影响”哪个文档有说明?我目前还没找到:(
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. 的真正含义。所以有点饶舌:(
Only one ResultSet object per Statement object can be open at any point in time.
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
used to retrieve the next result from a sequence of multiple results. 重新从这个Statement 去取出其它的resultset 原来的resultset就自动关闭! 因为一个Statement 可以产生几个有顺序的resultset 但要一次只能获得一个resultset
感谢!终于明白了含义! 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相互不影响
举例最好!
而其中每个statement都可以产生一个ResultSet,各个ResultSet相互不影响(false)那段英文的意思是:你用一个statement执行了一个query得到一个resultset,紧接着你又用这个statement执行了别的query或者update,那么最初的resultset就失效了。
其实是这一句不大明白从一个含有多个results的序列?
多个results?什么含义呢难道是说象楼上说的:你用一个statement执行了一个query得到一个resultset,
紧接着你又用这个statement执行了别的query?
感觉表达的不是这样的含义
而其中每个statement都可以产生一个ResultSet,各个ResultSet相互不影响(false)哪儿写的这个是false?
的意思是,一个statement执行出了多个resulteset,如果其中一个resulteset被调用了next(),其他的resultset就无效了.整段话的意思大致是一个statement同时只能care一个resultset.各个ResultSet相互不影响,我认为不对,原因就是那段英文啊
一个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相互不影响”哪个文档有说明?我目前还没找到:(
的意思是,一个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. 的真正含义。所以有点饶舌:(
一个connection可以产生多个statement,而其中每个statement都可以产生一个ResultSet,各个ResultSet相互不影响
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
重新从这个Statement 去取出其它的resultset 原来的resultset就自动关闭!
因为一个Statement 可以产生几个有顺序的resultset 但要一次只能获得一个resultset
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相互不影响