`
痴癫狂
  • 浏览: 674 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Orcle driver的ResultSet.next()究竟做了什么?

 
阅读更多
import java.sql.*;
import oracle.jdbc.OracleTypes;
import util.DateUtil;

public class Test4PS {

    public static void main(String[] args) {
        String driver = "oracle.jdbc.OracleDriver";
        String url = "XXXXXXXX";
        String user = "XXXXXX";
        String password = "XXXXXXXXX";
        Connection conn = null;
        Statement stmt = null;
        CallableStatement cs = null;
        ResultSet rs = null;
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, user, password);
            cs = conn.prepareCall("{Call XXXXXXXXXXXXX(?,?,?,?,?,?,?,?,?)}");
            cs.setInt(1, 2);
            cs.setInt(2, 2);
            cs.setInt(3, 200909);
            cs.setInt(4, 200910);
            cs.setInt(5, 0);
            cs.setString(6, "2");
            cs.setInt(7, 1);
            cs.setString(8, "0");
            cs.registerOutParameter(9, OracleTypes.CURSOR);
            cs.execute();
            rs = (ResultSet) cs.getObject(9);
            System.out.println("测试时间开始:");
            long start_time = System.currentTimeMillis();
            int k = 0;
            while (rs.next()) {//执行第一次rs.next()时,大概使用了20多秒,而执行第二次、第三次...时,大概是0.01秒
                if (k <= 100) {
                    test.CommonTool.println(k++);//
                }
            }
            rs.close();
            //stmt.close();
            //conn.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


-------------------------------------------------------------------------
1.主要问题:执行rs.next的第一次大概花费了20多秒,第二次以后平均0.01秒,为什么?

2.环境:ORACLE 10.2.0.4、class12.jar(10.2.0.4)

3.曾经使用过的解决方案:
更换Driver、同类procedure对比,不同类procedure对比,oraclecachedrowset。

4.测试结果
测试结果A.:仅发生在callprocedure之后,一般查询无此问题;
测试结果B.:在执行rs.next之前,这个procedure运行时间大概2分钟,当执行其他procedure也存在部分发生该情况;
测试结果C.:更换其他版本Driver(包括ojdbc14.jar),依然存在。

由于问答无人回答,请斑竹见谅。

分享到:
评论
1 楼 javaeyetodj 2012-08-03  
我也在测试这个问题,发现Result.next()比rs.getString()消耗的时间更长,但想更深一步了解.next()到底做了什么操作,仅仅是指针移动一位吗 ?

相关推荐

    Oracle JDBC Drivers release 11.2.0.3.0.rar

    These are the driver versions in the 11R2 release: - JDBC Thin Driver 11R2 100% Java client-side JDBC driver for use in client applications, middle-tier servers and applets. - JDBC OCI Driver 11...

    Orcle游标实例.txt

    ### Oracle 游标实例解析及应用 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种数据库对象,它允许程序能够逐行处理查询结果集中的数据。与直接执行SQL语句获取整个结果集不同,游标可以逐行...

    Oracle11.2.0.1.0驱动包

    &lt;!--mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.1.0 -Dpackaging=jar -Dfile=c:\ojdbc14.jar--&gt; ... &lt;artifactId&gt;ojdbc6 &lt;version&gt;11.2.0.1.0 &lt;/dependency&gt;

    orcle.dateaccess92070.rar

    这个压缩包 "orcle.dateaccess92070.rar" 包含了所有必要的组件,以确保用户能够顺利在服务器上安装并使用该工具。 Oracle 数据库连接工具是数据库管理员、开发人员以及需要频繁交互数据库的用户不可或缺的工具。...

    orcle的jdk1.8.181用于64位linux.zip

    orcle的jdk1.8.181用于64位linux.zip。 JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 SE(JavaSE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。 EE...

    orcle一些基础1.docx

    在文档"orcle一些基础1.docx"中,提到了几个关键的SQL命令,包括创建表、插入数据、修改字段属性以及添加和删除字段。下面将详细讲解这些知识点。 首先,创建表是数据库设计的基础。在示例中,创建了一个名为`...

    oracle最新OCI文件.zip

    Oracle OCI,全称为Oracle Call Interface,是Oracle数据库提供的一种C语言编程接口,允许开发者在C或C++程序中直接操作数据库。这个“oracle最新OCI文件.zip”包含了最新的Oracle OCI库和相关的开发文件,旨在确保...

    oracle 的instantclient18.5

    Oracle的Instant Client 18.5是Oracle公司提供的一款轻量级的客户端工具,它使得开发者和系统管理员能够在不安装完整Oracle数据库服务器的情况下,与Oracle数据库进行交互。这个版本的Instant Client支持Oracle ...

    Orcle仓库管理系统课程设计报告数据库部分,Orcle代码.pdf

    【Oracle仓库管理系统数据库设计】 在本课程设计报告中,我们关注的是基于Oracle的仓库管理系统,其核心在于数据库的设计与管理。这个系统旨在实现仓库货物的高效管理,包括进仓、出仓、库存预警、数据管理和查询...

    Orcle仓库管理系统课程设计报告数据库部分,Orcle代码.docx

    Oracle仓库管理系统是一个基于Oracle数据库技术设计的系统,用于高效地管理仓库中的货物进出、库存以及相关的数据维护。在这个系统设计报告中,我们看到系统的主要功能包括进仓管理、出仓管理、库存预警、数据管理和...

    Orcle数据保存与恢复.doc

    Oracle 数据库的保存与恢复是数据库管理中的关键环节,它涉及到数据的安全性和可用性。本文主要探讨了 Oracle 数据库在面临实例故障和介质故障时如何进行恢复,以及相关的恢复策略和案例。 首先,理解数据库恢复的...

    orcle64位PLSQL+注册机+汉化

    珍藏版供大家下载不要分,ORCLE环境安装必备.........................

    jdbc8.jar-oracle12

    使用完数据库连接后,务必关闭`Connection`、`Statement`和`ResultSet`对象,以避免资源泄漏。 **ojdbc8-oracle12** 在`ojdbc8-oracle12`这个子文件中,可能包含了Oracle 12c数据库与JDK 8兼容的特定版本JDBC驱动...

    orcle8i ops concepts.pdf

    ### Oracle8i Parallel Server 设置与配置指南 #### 概述 Oracle8i Parallel Server(OPS)是Oracle在1999年发布的一款企业级数据库管理系统的重要组成部分,它为用户提供了一种高效、可靠的并行处理机制,能够...

    orcle归档日志满了解决办法.txt

    orcle归档日志满了解决办法,每步步骤详细说明,自己在工作中积累的文档

    orcle数据库课件 第一章

    orcle的课程设计 建表 插入数据 索引 查询 约束等等

    orcle设计与开发

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中占据着重要的地位。在Oracle的设计与开发过程中,掌握其核心功能和常用函数、方法对于提高数据库管理效率至关重要。以下将详细介绍Oracle的...

    orcle相关常用执行命令语句

    CREATE TABLESPACE byh DATAFILE 'D:\oradata\orcl\byh.dbf' SIZE 200M AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED; ``` 上述命令创建名为byh的表空间,初始大小为200MB,并配置自动扩展,每次扩展5MB,最大尺寸不...

    orcle基本培训ppt文件

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据重要地位。这份“Oracle基本培训ppt文件”是为初学者设计的,旨在介绍Oracle的基本查询和函数使用,帮助新用户快速掌握数据库操作。...

    Orcle的SQLplus语句详解.doc

    Oracle SQLplus 语句详解 Oracle SQLplus 是 Oracle 数据库管理系统中的一款命令行工具,用于执行 SQL 语句,查看数据库对象的结构,执行事务处理等。下面我们将对 Oracle SQLplus 的使用、语句、命令、函数等进行...

Global site tag (gtag.js) - Google Analytics