java-JDBC基础
字数 1006 2025-08-11 21:26:27

JDBC基础教程

一、JDBC概述

JDBC(Java Database Connectivity)是Java提供的一套用于连接和操作关系型数据库的API。它解决了以下问题:

  1. 数据库差异问题:不同数据库厂商实现不同,JDBC提供统一接口
  2. 可移植性:应用程序通过JDBC与数据库交互,更换底层数据库时代码基本不变

工作流程:

程序 <---> JDBC <---> 数据库驱动 <---> 数据库

二、核心接口与类

JDBC API主要位于java.sql包中,包含以下重要组件:

1. Driver接口

  • 所有JDBC驱动程序必须实现的接口
  • 由数据库厂商提供实现类并打包为JAR文件
  • 例如MySQL驱动:mysql-connector-j-8.0.31.jar

2. DriverManager类

  • 管理JDBC驱动程序
  • 重要方法:
    static void registerDriver(Driver driver)  // 注册驱动程序
    static Connection getConnection(String url, String user, String password)  // 获取连接
    

3. Connection接口

  • 表示Java程序与数据库的连接
  • 重要方法:
    Statement createStatement()  // 创建Statement对象
    

4. Statement接口

  • 执行SQL语句并返回结果
  • 重要方法:
    boolean execute(String sql)  // 执行SQL语句,可能返回多个结果
    int executeUpdate(String sql)  // 执行INSERT/UPDATE/DELETE,返回影响行数
    ResultSet executeQuery(String sql)  // 执行SELECT,返回ResultSet
    

5. PreparedStatement接口

  • Statement的子接口,用于预编译SQL语句
  • 优点:
    • 防止SQL注入
    • 提高执行效率
    • 简化参数化SQL编写
  • 获取方式:
    PreparedStatement prepareStatement(String sql)
    

6. ResultSet接口

  • 保存查询结果集
  • 特点:
    • 结果以逻辑表格形式存储
    • 内部有游标(指针)指向当前行
    • 初始位置在第一行之前
  • 常用方法:
    boolean next()  // 移动游标到下一行
    String getString(String columnName)  // 获取指定列的值
    

三、JDBC使用步骤

1. 注册驱动

推荐方式:

Class.forName("com.mysql.jdbc.Driver");

关于CLASSPATH的说明

  • 不建议设置环境变量CLASSPATH
  • 现代IDE(如IDEA)会自动管理类路径
  • 运行时可通过-cp参数指定类路径

2. 获取连接

Connection con = DriverManager.getConnection(url, user, password);

URL格式:

jdbc:数据库类型://主机:端口/数据库名

示例:

Connection con = DriverManager.getConnection(
    "jdbc:mysql://192.168.86.130:3306/testdb", 
    "test", 
    "password"
);

3. 创建Statement对象

Statement stt = con.createStatement();

4. 执行SQL语句

// 执行DDL/DML
stt.execute("CREATE TABLE users(id INT, name VARCHAR(20))");

// 执行查询
ResultSet rs = stt.executeQuery("SELECT * FROM users");

5. 处理结果集

while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    System.out.println(id + ": " + name);
}

6. 释放资源

rs.close();
stt.close();
con.close();

最佳实践

  • 按打开顺序的逆序关闭资源
  • 使用try-with-resources或finally块确保资源释放

四、高级主题

1. 参数化查询

PreparedStatement pstmt = con.prepareStatement(
    "INSERT INTO users VALUES(?, ?)");
pstmt.setInt(1, 1001);
pstmt.setString(2, "John Doe");
pstmt.executeUpdate();

2. 事务处理

con.setAutoCommit(false);  // 关闭自动提交
try {
    // 执行多个SQL
    con.commit();  // 提交事务
} catch (SQLException e) {
    con.rollback();  // 回滚事务
}

3. 批处理

Statement stmt = con.createStatement();
stmt.addBatch("INSERT INTO users VALUES(1, 'Alice')");
stmt.addBatch("INSERT INTO users VALUES(2, 'Bob')");
int[] counts = stmt.executeBatch();

五、总结

JDBC是Java数据库编程的基础,掌握以下核心概念至关重要:

  1. 理解JDBC架构和组件关系
  2. 熟悉标准使用流程
  3. 掌握Statement和PreparedStatement的区别
  4. 了解事务处理和批处理等高级特性

实际开发中应:

  • 使用PreparedStatement防止SQL注入
  • 确保资源正确释放
  • 合理使用连接池提高性能

更多细节可参考官方JDBC文档和特定数据库的驱动文档。

JDBC基础教程 一、JDBC概述 JDBC(Java Database Connectivity)是Java提供的一套用于连接和操作关系型数据库的API。它解决了以下问题: 数据库差异问题 :不同数据库厂商实现不同,JDBC提供统一接口 可移植性 :应用程序通过JDBC与数据库交互,更换底层数据库时代码基本不变 工作流程: 二、核心接口与类 JDBC API主要位于 java.sql 包中,包含以下重要组件: 1. Driver接口 所有JDBC驱动程序必须实现的接口 由数据库厂商提供实现类并打包为JAR文件 例如MySQL驱动: mysql-connector-j-8.0.31.jar 2. DriverManager类 管理JDBC驱动程序 重要方法: 3. Connection接口 表示Java程序与数据库的连接 重要方法: 4. Statement接口 执行SQL语句并返回结果 重要方法: 5. PreparedStatement接口 Statement的子接口,用于预编译SQL语句 优点: 防止SQL注入 提高执行效率 简化参数化SQL编写 获取方式: 6. ResultSet接口 保存查询结果集 特点: 结果以逻辑表格形式存储 内部有游标(指针)指向当前行 初始位置在第一行之前 常用方法: 三、JDBC使用步骤 1. 注册驱动 推荐方式: 关于CLASSPATH的说明 : 不建议设置环境变量CLASSPATH 现代IDE(如IDEA)会自动管理类路径 运行时可通过 -cp 参数指定类路径 2. 获取连接 URL格式: 示例: 3. 创建Statement对象 4. 执行SQL语句 5. 处理结果集 6. 释放资源 最佳实践 : 按打开顺序的逆序关闭资源 使用try-with-resources或finally块确保资源释放 四、高级主题 1. 参数化查询 2. 事务处理 3. 批处理 五、总结 JDBC是Java数据库编程的基础,掌握以下核心概念至关重要: 理解JDBC架构和组件关系 熟悉标准使用流程 掌握Statement和PreparedStatement的区别 了解事务处理和批处理等高级特性 实际开发中应: 使用PreparedStatement防止SQL注入 确保资源正确释放 合理使用连接池提高性能 更多细节可参考官方JDBC文档和特定数据库的驱动文档。