### JDBC学习笔记详解
#### 一、概述JDBC
JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它可以为多种关系数据库提供统一的访问接口。JDBC技术的引入,使得Java开发者能够使用相同的Java代码访问不同的数据库,大大提高了代码的可移植性和可重用性。
#### 二、JDBC驱动程序分类
JDBC驱动程序根据其工作方式被分为四类:
1. **JDBC-ODBC Bridge + ODBC驱动**:这是最早期的JDBC实现方式,通过桥接器将JDBC调用转化为ODBC调用,再由ODBC驱动进行数据库访问。虽然可以利用现有的ODBC数据源,但效率和安全性较低,不推荐在生产环境中使用。
2. **基于本地API的部分Java驱动**:这种驱动直接使用数据库的本地协议进行数据交互,然后通过驱动程序中的Java部分将结果返回给应用程序。具有较高的效率,但由于需要本地库的支持,安全性略低。
3. **纯Java的网络驱动**:在这种模式下,应用程序与数据库之间通过一个纯Java的中间服务器进行通信,虽然增加了安全性和跨平台性,但由于存在两次网络传输,效率相对较低。
4. **纯Java本地协议驱动**:采用纯Java代码实现,直接通过数据库的本地协议访问数据库,兼具高效性和安全性,是目前最推荐使用的驱动类型。
#### 三、JDBC编程步骤
JDBC编程主要包括以下几个步骤:
1. **加载和注册数据库驱动**:使用`Class.forName()`方法加载并注册数据库驱动。例如,对于MySQL数据库,可以使用`com.mysql.jdbc.Driver`作为驱动类名。
2. **建立数据库连接**:通过`DriverManager.getConnection()`方法建立数据库连接,需要提供URL、用户名和密码等参数。
3. **创建Statement对象**:创建`Statement`或`PreparedStatement`对象,其中`PreparedStatement`支持参数化的SQL语句,可以提高安全性并避免SQL注入攻击。
4. **执行SQL语句**:通过`Statement`或`PreparedStatement`对象执行SQL语句,如果是查询语句,则使用`executeQuery()`方法;如果是更新、插入或删除语句,则使用`executeUpdate()`方法。
5. **处理结果集**:如果执行的是查询语句,结果将返回一个`ResultSet`对象,可以通过循环遍历该对象获取每一行记录的数据。
#### 四、示例代码
```java
import java.sql.*;
public class JdbcExample {
public static void main(String[] args) {
String driverName = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 加载驱动
Class.forName(driverName);
// 建立连接
conn = DriverManager.getConnection(url, username, password);
// 创建Statement对象
stmt = conn.createStatement();
// 执行查询语句
String sql = "SELECT * FROM tableName";
rs = stmt.executeQuery(sql);
// 处理结果集
while (rs.next()) {
System.out.println(rs.getString("columnName"));
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (rs != null) try { rs.close(); } catch (SQLException e) {}
if (stmt != null) try { stmt.close(); } catch (SQLException e) {}
if (conn != null) try { conn.close(); } catch (SQLException e) {}
}
}
}
```
以上代码展示了如何使用JDBC连接MySQL数据库并执行基本的查询操作。在实际应用中,还需要注意异常处理和资源释放,以确保程序的健壮性和数据库资源的有效管理。