gst*_*low 7 java database-connection jdbc resultset
我试图理解这两种创建语句的方法之间的区别:
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
Run Code Online (Sandbox Code Playgroud)
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
Run Code Online (Sandbox Code Playgroud)
第二个参数相同但第一个参数不同
从Java doc:
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);
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看到所做的所有更改。