### JDBC基础知识总结
#### 一、概述
JDBC(Java Database Connectivity)是一种标准的Java API,用于连接并操作各种类型的数据库。它从物理结构上说就是一套Java语言访问数据库的接口集合,本质上则是调用者(通常是程序员)与实现者(数据库厂商)之间的一种协议。JDBC的实现是由各个数据库厂商通过提供驱动程序来完成的,这些驱动程序允许开发者完全使用Java代码来连接和操作数据库。
JDBC与ODBC类似,但ODBC是基于C语言的数据库访问接口,而JDBC则是Java版本的ODBC,专门为Java设计。JDBC的主要特性包括高度一致性和简单性,常见的接口数量较少,易于学习和使用。
#### 二、JDBC的主要组成部分
1. **Java.sql包**:提供基本的数据库编程服务,如生成连接、执行SQL语句等。此外,还包括一些高级处理,如批处理更新、事务隔离和可滚动结果集等。
- **Connection**:表示与特定数据库的连接,可通过`getMetaData`方法获得数据库信息、支持的SQL语法等。
- **Driver**:每个驱动程序类必须实现的接口,用于数据库驱动程序的标准化。
- **DriverManager**:管理一组JDBC驱动程序的服务,用于初始化驱动程序和创建数据库连接。
- **Statement**:用于执行静态SQL语句。
- **PreparedStatement**:用于执行预编译的SQL语句,提高执行效率。
- **CallableStatement**:用于访问数据库中的存储过程。
- **ResultSet**:表示查询结果集。
- **ResultSetMetaData**:提供关于ResultSet对象中列的类型和属性信息。
2. **javax.sql包**:提供高级数据库操作的支持,如连接管理和容器管理的连接池等。
- **DataSource**:用于连接池的管理,提高并发性能。
- **RowSet**:提供离线数据处理能力,适合于远程数据处理场景。
#### 三、JDBC驱动程序分类
根据其工作方式,JDBC驱动程序可分为四类:
1. **JDBC-ODBC Bridge + ODBC驱动**:通过JDBC-ODBC桥将JDBC调用转化为ODBC调用,再由ODBC驱动程序转换为数据库命令。这种方式利用了现有的ODBC数据源,但效率和安全性较低。
2. **基于本地API的部分Java驱动**:应用程序通过本地协议与数据库交互,通过驱动程序中的Java部分返回结果给客户端。效率较高,但安全性较差。
3. **纯Java的网络驱动**:应用程序通过JDBC驱动程序连接到一个中间服务器,再由中间服务器与数据库通信。虽然提高了安全性,但由于存在两段通信,效率较低。
4. **纯Java本地协议驱动**:通过本地协议直接使用纯Java访问数据库。这种方式效率最高且安全性最好,是目前最推荐使用的驱动类型。
#### 四、JDBC编程步骤
1. **注册驱动程序**:有多种方式注册驱动程序。
- 使用`Class.forName()`静态加载驱动程序。
- 创建驱动实例并通过`DriverManager.registerDriver()`手动注册。
- 在Java虚拟机启动时通过系统属性自动加载驱动程序。
2. **建立数据库连接**:使用`DriverManager.getConnection()`方法建立与数据库的连接。
3. **执行SQL语句**:通过`Statement`或`PreparedStatement`执行SQL语句。
4. **处理结果集**:通过`ResultSet`处理查询结果。
5. **关闭资源**:最后确保关闭所有打开的资源,包括连接、语句和结果集等。
通过上述步骤,开发者可以轻松地使用Java进行数据库的操作,无论是简单的查询还是复杂的事务处理,都可以通过JDBC API完成。