简介
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 驱动, 它比起第一和第二种类型驱动要快, 并且不像第三种驱动那样依赖网络.
时间: 2024-11-03 20:06:01