Blu*_*bel 10 java mysql jdbc relational-database
一旦我使用带有oracle驱动程序的jdbc并运行select查询,查询的结果是存储在oracle内存或文件系统或临时表的服务器中?
一旦我通过获取下一行来运行下一个方法,它是从oracle服务器内存加载到jvm内存吗?
如果我将结果集上的获取大小数定义为1000,这是否意味着1000行从oracle加载到JVM上的JDBC驱动程序?
将在本地内存中提取默认行数(不是整个结果集).一旦到达获取行的最后一行(比如通过执行next()并尝试访问下一行),如果结果中有更多行,则将对数据库进行另一次往返调用以获取下一行批次行.
编辑1:
您可以通过执行此操作来查看结果集一次获取的行数(请验证语法):
rs.beforeFirst(); // will put cursor before the first row
rs.last(); // will put cursor after the last line
int noOfRows = rs.getRow(); // will give you the current row number
Run Code Online (Sandbox Code Playgroud)
编辑2:
如果要在本地内存中获取比平常更多的行,可以考虑使用CachedRowSet.即使这样也会进行往返,但通常会低于正常的结果集.但是,您应该考虑对您的应用程序进行一些性能检查.
awm*_*awm -3
执行查询后,数据将返回到 JVM。JVM 处理从该点开始的所有数据 I/O。