JDBC 入门 - 简介

简介

JDBC API

JDBC 是 Java 数据库连接(Java DataBase Connectivity) 的缩写, 它提供了 Java 访问各种关系型数据库的一系列 API, 功能包括:

  • 建立数据库连接
  • 创建 SQL 语句
  • 执行 SQL 语句
  • 查看或修改结果集

JDBC API 中主要几个接口:

  • DriverManager: 由于 Java 程序可能会操作多个数据库, 所以我们可能需要来自于不同数据库的连接. Driver Manager 就是用来管理一个或多个数据库驱动, 并根据需要返回不同的连接.
  • Driver: 用于管理于数据库的通信. 由 Driver Manager 内部管理, 一般很少直接适用 Driver 类, 更多的是使用 Driver Manager.
  • Connection : 提供了与数据库交互的所有方法.
  • Statement : 提供了与 SQL包 括存储过程 相关的操作.
  • ResultSet: 提供了与 SQL 查询返回结果集相关的操作
  • SQLException: 处理与数据库操作相关的异常

JDBC 驱动

JDK 中只定义了操作数据库相关的 API, 这些接口的实现, 也就是对不同数据操作的实现, 并不可能包含在 JDK 中. 这些接口一般都由第三方实现, 被称为 JDBC 驱动(driver).

JDBC 驱动的实现方式主要有四种:

1) JDBC-ODBC 桥. JDBC 驱动由 ODBC 桥接而来, 在 JAVA 刚出来的时候, 支持 ODBC 的驱动占绝大多数, 所以让这些数据库能支持 Java 的最快方式就是桥接:

技术分享

2) Native-API 驱动. 对 JDBC API 的调用将会被转化成本地 C/C++ 驱动的调用, 这种方式比起第一种方式要快一些, 因为它没有了对 ODBC 的调用. 但是这种也是有局限的, 由于这些 C/C++ 本地驱动是由数据库厂商提供, 如果要更换数据库, 那么这些这些代码也要修改.

技术分享

Oracle Call Interface (OCI) 就是属于这种类型, 以下是 JDBC 调用 OCI 的一个例子:

    String  query  = "select /*+ result_cache */ * from emp where empno < : 1";
       ((oracle.jdbc.OracleConnection)conn).setImplicitCachingEnabled(true);
       ((oracle.jdbc.OracleConnection)conn).setStatementCacheSize(10);
       PreparedStatement  pstmt;
       ResultSet rs;

        for (int j = 0 ; j < 10 ; j++ )
        {
           pstmt  = conn.prepareStatement (query);
           pstmt.setInt(1,7500);
           rs  = pstmt.executeQuery();
             while (rs.next( ) )
            {     // see the values  }
              rs.close;
              pstmt.close( ) ;
            }
        }

3) 纯Java中间件驱动. 使用了三层结构, 本地的 JDBC API 调用通过网络协议发送到中间件服务器, 中间件服务器解析后再调用实际的JDBC驱动(1,2,4型).如图:

技术分享

4) 纯Java驱动. 数据库厂商提供了 Java 驱动, 它比起第一和第二种类型驱动要快, 并且不像第三种驱动那样依赖网络.

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。