首页 > 其他分享 >JDBC驱动中的核心代码位置

JDBC驱动中的核心代码位置

时间:2023-06-15 15:03:15浏览次数:30  
标签:JDBC callingStatement int fields 代码 packet && mysql 驱动


mysql-connector-java-5.1.36-src/src/com/mysql/jdbc/MysqlIO.java
+getResultSet




protected ResultSetImpl getResultSet(StatementImpl callingStatement, long columnCount, int maxRows, int resultSetType, int resultSetConcurrency,
            boolean streamResults, String catalog, boolean isBinaryEncoded, Field[] metadataFromCache) throws SQLException {
        Buffer packet; // The packet from the server
        Field[] fields = null;

        // Read in the column information

        if (metadataFromCache == null /* we want the metadata from the server */) {
            fields = new Field[(int) columnCount];

            for (int i = 0; i < columnCount; i++) {
                Buffer fieldPacket = null;

                fieldPacket = readPacket();
                fields[i] = unpackField(fieldPacket, false);
            }
        } else {
            for (int i = 0; i < columnCount; i++) {
                skipPacket();
            }
        }

        packet = reuseAndReadPacket(this.reusablePacket);

        readServerStatusForResultSets(packet);

        //
        // Handle cursor-based fetch first
        //

        if (this.connection.versionMeetsMinimum(5, 0, 2) && this.connection.getUseCursorFetch() && isBinaryEncoded && callingStatement != null
                && callingStatement.getFetchSize() != 0 && callingStatement.getResultSetType() == ResultSet.TYPE_FORWARD_ONLY) {
            ServerPreparedStatement prepStmt = (com.mysql.jdbc.ServerPreparedStatement) callingStatement;

            boolean usingCursor = true;

            //
            // Server versions 5.0.5 or newer will only open a cursor and set this flag if they can, otherwise they punt and go back to mysql_store_results()
            // behavior
            //

            if (this.connection.versionMeetsMinimum(5, 0, 5)) {
                usingCursor = (this.serverStatus & SERVER_STATUS_CURSOR_EXISTS) != 0;
            }

            if (usingCursor) {
                RowData rows = new RowDataCursor(this, prepStmt, fields);
                 .........



标签:JDBC,callingStatement,int,fields,代码,packet,&&,mysql,驱动
From: https://blog.51cto.com/u_16162111/6492531

相关文章

  • 【代码仓库】【模板】树链剖分
    #include<bits/stdc++.h>#definerep(i,a,b)for(inti=(a);i<=(b);i++)#definepre(i,a,b)for(inti=(a);i>=(b);i--)#defineEde(i,u)for(inti=h[u];i;i=ne[i])#definego(i,a)for(autoi:a)//#defineintlonglong#def......
  • ESMapV数字孪生三维可视化云平台-零代码可视化设计师助力者
        ESMapV数字孪生三维可视化云平台是一款基于零代码的数字孪生领域可视化系统,以产品化实现入门级数字孪生三维可视化交互应用(满足90%SaaS客户相关诉求,解决中小型数字孪生项目SaaS化交付能力),能够实现室内三维场景、园区三维场景、城市三维场景可视化业务场景的呈现,......
  • Docusaurus之markdown文档的vscode代码片段
    需求我是使用Docusaurus建立的个人站点,在写文档是总是要在开头配置作者、日期等等,用过Docusaurus的都应该知道。因为每次新建一个md文档都需要重新配置,很麻烦,于是我就想能不能新建一个用户代码片段(vscode的一个功能),每次我只需要敲几个字符,按回车就能得到一个模板,以至于每次写mar......
  • 矩阵的逆的代码符号
    矩阵的逆是矩阵理论中的一个重要概念。在数学和计算机科学中,矩阵的逆是指对于一个给定的方阵A,如果存在一个矩阵B,使得A与B的矩阵乘积等于单位矩阵I,即AB=BA=I,那么B就是A的逆矩阵。矩阵的逆可以用来解线性方程组、计算行列式的倒数、求解特征值等问题。在这里,我将使用Python编写代码......
  • QA|如何给我们的自动化测试代码增加日志记录?|Loguru
    这里我们用的是loguru,logging虽然是自带的,但确实使用起来比较繁琐,loguru在Logging基础上增加了很多个性化功能,使用起来也比较简单,所以就使用loguru代码如下:1#cal_testlog.py23fromloguruimportlogger4fromconfigimportBASE_DIR5importtime67now_dt......
  • Java低代码开发工具:jvs-rules 2.1.8 新版本功能清单
    规则引擎用于管理和执行业务规则。它提供了一个中央化的机制来定义、管理和执行业务规则,以便根据特定条件自动化决策和行为。规则引擎的核心概念是规则。规则由条件和动作组成。条件定义了规则适用的特定情况或规则触发的条件,而动作定义了规则满足时要执行的操作或行为。jvs-rules......
  • 测试驱动开发全功略
    {关键字}测试驱动开发/TestDrivenDevelopment/TDD测试用例/TestCase/TC设计/Design重构/Refactoring{TDD的目标}CleanCodeThatWorks这句话的含义是,事实上我们只做两件事情:让代码奏效(Work)和让代码洁净(Clean),前者是把事情做对,后者是把事情做好。想想看,其实我们平时所做的所有......
  • 淘宝接口数据采集获得店铺详情api接口获取源代码调用示例展示
     淘宝店铺详情API接口是阿里巴巴开放平台提供的一种API接口,用于获取指定淘宝店铺的详细信息,如店铺名称、店铺简介、开店时间、主营类目等信息。具体来说,淘宝店铺详情API接口(免费获取调用私信)的作用包括:1.获取店铺基本信息:可以获取店铺名称、描述、卖家主页、好评率等基本信息,帮助......
  • 淘宝接口数据采集获得店铺详情api接口获取源代码调用示例展示
    ​ 淘宝店铺详情API接口是阿里巴巴开放平台提供的一种API接口,用于获取指定淘宝店铺的详细信息,如店铺名称、店铺简介、开店时间、主营类目等信息。具体来说,淘宝店铺详情API接口(免费获取调用)的作用包括:1.获取店铺基本信息:可以获取店铺名称、描述、卖家主页、好评率等基本信息,帮......
  • JDBC-API详解-PreparedStatement-原理
    /**PreparedStatement原理讲解*PreparedStatement的预编译功能用useServerPrepStmts=true开启**/@TestpublicvoidPreparedStatement2()throwsException{//1.注册驱动//Class.forName......