我正在努力理解这两种创建语句的方法之间的区别:
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_ONLY
、ResultSet.TYPE_SCROLL_INSENSITIVE
或ResultSet.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看到正在进行的所有更改。