ResultSet TYPE_SCROLL_SENSITIVE和TYPE_SCROLL_INSENSITIVE之间的差异

gst*_*low 7 java database-connection jdbc resultset

我试图理解这两种创建语句的方法之间的区别:

1:

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
Run Code Online (Sandbox Code Playgroud)

2:

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
Run Code Online (Sandbox Code Playgroud)

第二个参数相同但第一个参数不同

从Java doc:

resultSetType-结果集类型;中的一个ResultSet.TYPE_FORWARD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE

TYPE_SCROLL_INSENSITIVE
常量,指示ResultSet可滚动但通常不影响作为其基础的数据的更改的对象的类型ResultSet


TYPE_SCROLL_SENSITIVE
该常数指示ResultSet对象的类型,该对象可滚动,并且通常对构成其基础的数据的变化敏感ResultSet

因此,我想证明基础货币的敏感性之间的差异ResultSet。我想了解“对底层基础数据的更改敏感ResultSet”(来自Javadoc)的含义。

请提供一个示例来说明并解释差异。

Fil*_*yen 8

敏感性与基础数据(数据库)有关。

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

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
Run Code Online (Sandbox Code Playgroud)

然后在8:20发出查询

SELECT * FROM PEOPLE;
Run Code Online (Sandbox Code Playgroud)

现在,将结果集保持打开状态,并使用next(),previous()和absolute(int))方法在结果集中滚动。

在8:23,有人更新了PEOPLE表中的数据。

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

现在来了区别。如果您使用SENSITIVE创建了该语句,那么您将在8:23看到所做的所有更改。