栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JDBC-为什么不能将ResultSet接口实例作为方法参数?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JDBC-为什么不能将ResultSet接口实例作为方法参数?

JDBC-为什么不能将ResultSet接口实例作为方法参数?
    这一点,在java.sql.ResultSet接口源码中给出了解释,

源码中所给解释如下,
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.

    也就是说:


     由于当Statement对象被关闭,或是再次执行executeXXX()方法,或者是从多个结果集序列中取回下一个结果集时,ResultSet对象会自动调用close()方法关闭资源,那么,ResultSet接口对象就不能作为方法参数,因为它会随着finally代码块中的关闭statement操作而被自动关闭。 因此,要将ResultSet返回的查询结果封装到List集合中,并将其返回,进行其它操作。 此外,java是面向对象的编程语言,java中所有的数据处理都是基于面向对象的编码风格实现的,让数据以符合java风格的形式存在,便于对数据的后续处理。
# 关于ResultSet的更多信息——[来源java.sql.ResultSet接口源码]
java.sql.ResultSet接口源码对其做了如下描述:
    (1)ResultSet接口对象-代表当前一次,执行SQL语句得到的数据库结果集,表示一个数据表数据集合.
    该对象持有一个指向当前行数据的游标指针(指针最初指向第一行数据之前),调用成员方法next可以将游标指
    针移动到下一行,并返回true;而如果下一行数据不存在,就返回false。这样,就可以借助while循环迭代访
    问结果集。
    (2) 默认情况下,ResultSet对象是可迭代的(通过next方法实现)、可更新的(通过Statement接口的
    executeQuery方法实现)。
    (3) 通常地,借助ResultSet对象的getter方法取回查询结果数据时,使用从1开始的下标更为高效;而通过传递名称字符串取回查询结果的方式,仅在SQL查询语句中包含了结果字段时才被采用。
    (4) SQL数据类型与Java数据类型之间存在着一一对应的映射关系,这种关系被JDBC specification所定义[可参考博客:https://www.cnblogs.com/shishm/archive/2012/01/30/2332142.html]。
    (5) 从JDBC API 2.0标准版本开始,ResultSet接口新增了一些updateXXX()方法,可用于直接更新数据表中的数据。例如:
	    [1]更新第5行数据,
	     rs.absolute(5); // moves the cursor to the fifth row of rs
	     rs.updateString("NAME", "AINSWORTH"); // updates the
	     // NAME column of row 5 to be AINSWORTH
	     rs.updateRow(); // updates the row in the data source
	    [2]插入新的行数据,
	        rs.moveToInsertRow(); // moves cursor to the insert row
	        rs.updateString(1, "AINSWORTH"); // updates the
	        // first column of the insert row to be AINSWORTH
	        rs.updateInt(2,35); // updates the second column to be 35
	        rs.updateBoolean(3, true); // updates the third column to true
	        rs.insertRow();
	        rs.moveToCurrentRow();
    (6)需要注意的是:当Statement对象被关闭,或是再次执行executeXXX()方法,或者是从多个结果集序列中取回下一个结果集时,ResultSet对象会自动调用close()方法关闭资源。


public interface ResultSet extends Wrapper, AutoCloseable {
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/721041.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号