结果集TYPE_SCROLL_SENSITIVE和TYPE_SCRollL_INSENSIVE之间的差异



我正在努力理解这两种创建语句的方法之间的区别:

1:

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

2:

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

第二个论点是相同的,但第一个不同的

来自java文档:

resultSetType——一种结果集类型;ResultSet.TYPE_FORWARD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE 之一

TYPE_SCROLL_INSENSITIVE
指示ResultSet对象的类型的常量,该对象是可滚动的,但通常对ResultSet下的数据的更改不敏感。


TYPE_SCROLL_SENSITIVE
指示ResultSet对象的类型的常量,该对象是可滚动的,并且通常对ResultSet下的数据的更改敏感。

因此,我想展示ResultSet的灵敏度之间的差异。我想了解这种"对ResultSet基础数据的更改敏感"(来自Javadoc)的含义。

请提供一个示例来演示和解释差异。

敏感度与底层数据(数据库)有关。

假设数据库中有PEOPLE表。您创建了不敏感的语句:

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

在8:20时,您发出一个查询

SELECT * FROM PEOPLE;

现在打开结果集,然后使用next()、previous()和absolute(int)方法滚动它。

8点23分,有人更新了人物表中的数据。

在8:24,您仍在滚动结果集,但由于您有INSENSITIVE结果集,您会看到旧数据。

现在不同了。如果您使用SENSITIVE创建了语句,那么您将在8:23看到正在进行的所有更改。

相关内容

  • 没有找到相关文章

最新更新