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

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

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 {
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5717352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存