JDBC驱动中的核心代码位置

原创 2015年11月18日 13:57:10

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);
                 .........

版权声明:本文为博主原创文章,未经博主允许不得转载。微信hustos联系博主。

JDBC为什么使用反射加载驱动

一直不太明白在使用JDBC的时候用Class.forName("com.mysql.jdbc.Driver")去加载驱动,就谷歌了一下,得到如下答案:前言JDBC源码地址 还有 在解释具体原因之前...
  • tenlee
  • tenlee
  • 2016年08月30日 17:04
  • 1286

mysql jdbc驱动源码分析(驱动加载)

jdbc链接数据库的时候我们知道有如下几个步骤: 1、加载驱动 2、获取数据库链接Connection 3、获取statement、preparedstatement 4、执行查询、更新语句获取结果R...
  • QH_JAVA
  • QH_JAVA
  • 2015年12月22日 23:52
  • 2049

jdbc接口及其驱动程序

1、数据库连接池
  • changyanmanman
  • changyanmanman
  • 2014年06月30日 15:55
  • 1918

java代码实现JDBC连接MySql以及引用驱动程序包

JDBC连接MySql以及引用驱动程序包
  • u013871100
  • u013871100
  • 2015年10月04日 12:00
  • 18038

JDBC中驱动加载的过程分析

江苏 无锡 缪小东        本篇从java.sql.Driver接口、java.sql.DriveManager类以及其它开源数据库的驱动类讨论JDBC中驱动加载的全过程以及JDBC的Fram...
  • novelly
  • novelly
  • 2013年07月13日 17:20
  • 1895

JDBC驱动程序的四种类型

Java中的JDBC驱动可以分为四种类型,包括JDBC-ODBC桥、本地API驱动、网络协议驱动和本地协议驱动。 JDBC驱动类型一、JDBC-ODBC桥 JDBC-ODBC 桥 是sun...
  • xad707348125
  • xad707348125
  • 2015年04月10日 20:10
  • 4120

jdbc加载驱动 Class.forName()的作用

在学习jdbc时,我们首先学到的是最简单的helloWorld入门,但是为什么要这样呢 ? //注册驱动 Class.forName("com.mysql.jd...
  • u010644448
  • u010644448
  • 2016年07月12日 23:05
  • 3216

JDBC纯驱动方式连接MySQL

1 新建一个名为MysqlDemo的Java Project 2 从http://dev.mysql.com/downloads/connector/j/中下载最新的驱动包。 这里有....
  • haishu_zheng
  • haishu_zheng
  • 2016年03月01日 23:13
  • 36170

JDBC驱动程序

http://www.mysql.com Downloads-Community mySQL Connectors-Connector/J进入JDBC驱动的下载页面 http://dev.mysql....
  • DynastyTing
  • DynastyTing
  • 2016年10月04日 18:10
  • 587

mysql数据库jdbc驱动程序的安装与测试

下载好jdbc驱动程序后 安装JDBC驱动: 解压缩mysql-connector-java-3.1.10.zip 将要使用的是mysql-connector-java-3.1.10...
  • sxf1997
  • sxf1997
  • 2014年05月13日 15:10
  • 3452
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JDBC驱动中的核心代码位置
举报原因:
原因补充:

(最多只允许输入30个字)