tth*_*tth 34 java database jdbc
我有一个.jsp页面,我有一个显示Oracle数据库记录的GUI表.该表允许典型的分页行为,例如"FIRST","NEXT","PREVIOUS"和"LAST".记录是从执行SQL语句返回的Java ResultSet对象中获取的.
这个ResultSet可能非常大,所以我的问题是:
如果我有一个包含一百万条记录的ResultSet但我的表只显示ResultSet中前十条记录中的数据,那么只有当我开始请求记录数据时才会获取数据,或者一旦ResultSet将所有数据完全加载到内存中从执行SQL语句返回?
Chr*_*ail 41
Java ResultSet是数据库中结果的指针(或游标).ResultSet从数据库中加载块中的记录.因此,要回答您的问题,数据仅在您请求时以块为单位提取.
如果需要控制驱动程序一次获取多少行,则可以在ResultSet上使用setFetchSize()方法.这将允许您控制一次检索的块的大小.
Jos*_*hua 11
JDBC规范未指定数据是否已流式传输或是否已加载到内存中.默认情况下是Oracle流.MySQL没有.要让MySQL流式传输结果集,您需要在Statement上设置以下内容:
pstmt = conn.prepareStatement(
sql,
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY);
pstmt.setFetchSize(Integer.MIN_VALUE);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30982 次 |
| 最近记录: |