JavaAPI — JDBC的使用(增删改查)

介绍

     Java API中的JDBC(Java Database Connectivity)是用于连接和操作关系型数据库的核心工具。开发者通过加载数据库驱动建立与数据库的连接,使用DriverManager.getConnection(url, user, password)获取Connection对象。增删改查操作通过Statement或PreparedStatement实现:插入数据时,构造INSERT语句并调用executeUpdate();查询数据时,执行SELECT语句并通过ResultSet遍历结果集;更新和删除分别使用UPDATE和DELETE语句配合executeUpdate()。预处理语句(PreparedStatement)能有效防止SQL注入,提升安全性。操作完成后需依次关闭ResultSet、Statement及Connection释放资源。JDBC通过统一接口屏蔽底层数据库差异,结合事务控制(commit()/rollback())确保数据一致性,是Java开发中实现数据库交互的基础技术。


准备数据库驱动

导入JDBC驱动包(如MySQL):

  <!-- Maven 依赖 -->
  <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.28</version>
  </dependency>

建立数据库连接

// 加载驱动(JDBC 4.0+ 可自动加载,无需显式调用)
Class.forName("com.mysql.cj.jdbc.Driver");

// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "123456";

// 获取连接
Connection connection = DriverManager.getConnection(url, user, password);

CRUD 操作示例

插入数据 (Create)

String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
try (PreparedStatement pstmt = connection.prepareStatement(sql)) {
    pstmt.setString(1, "张三");
    pstmt.setInt(2, 25);
    int rows = pstmt.executeUpdate();
    System.out.println("插入行数: " + rows);
}

查询数据 (Read)

String sql = "SELECT * FROM users WHERE age > ?";
try (PreparedStatement pstmt = connection.prepareStatement(sql)) {
    pstmt.setInt(1, 20);
    ResultSet rs = pstmt.executeQuery();
    while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        int age = rs.getInt("age");
        System.out.println(id + ", " + name + ", " + age);
    }
}

更新数据 (Update)

String sql = "UPDATE users SET age = ? WHERE name = ?";
try (PreparedStatement pstmt = connection.prepareStatement(sql)) {
    pstmt.setInt(1, 30);
    pstmt.setString(2, "张三");
    int rows = pstmt.executeUpdate();
    System.out.println("更新行数: " + rows);
}

删除数据 (Delete)

String sql = "DELETE FROM users WHERE id = ?";
try (PreparedStatement pstmt = connection.prepareStatement(sql)) {
    pstmt.setInt(1, 1001);
    int rows = pstmt.executeUpdate();
    System.out.println("删除行数: " + rows);
}

资源释放

Java JDBC操作后需显式释放Connection、Statement、ResultSet资源,按创建逆序调用close()方法关闭,推荐使用try-with-resources自动管理,防止内存泄漏和数据库连接耗尽,确保系统稳定运行。

  • 始终关闭连接和语句对象(使用try-with-resources自动关闭):
  try (Connection conn = DriverManager.getConnection(url, user, password);
       Statement stmt = conn.createStatement()) {
      // 执行操作...
  } catch (SQLException e) {
      e.printStackTrace();
  }

事务管理

Java JDBC事务管理通过Connection对象控制,关闭自动提交(setAutoCommit(false)),执行操作后手动commit()提交或异常时rollback()回滚,确保数据一致性。推荐结合try-catch-finally或try-with-resources实现。

try {
    connection.setAutoCommit(false); // 关闭自动提交

    // 执行多个更新操作...
    // pstmt1.executeUpdate();
    // pstmt2.executeUpdate();

    connection.commit(); // 提交事务
} catch (SQLException e) {
    connection.rollback(); // 回滚事务
} finally {
    connection.setAutoCommit(true); // 恢复自动提交
}

注意事项

  1. 不同数据库驱动类名和URL格式不同(如Oracle:oracle.jdbc.driver.OracleDriver)。
  2. SQL参数使用?占位符,通过setXxx()方法设置值。
  3. 确保数据库服务开启,且网络权限开放。

总结

     Java API中JDBC是连接和操作数据库的核心技术,其使用流程包括加载驱动、建立连接、执行SQL及关闭资源。首先通过Class.forName()加载数据库驱动(如MySQL的com.mysql.cj.jdbc.Driver),随后通过DriverManager.getConnection()方法传入数据库URL、用户名和密码创建Connection对象。连接成功后,通过createStatement()或prepareStatement()创建Statement或PreparedStatement对象,后者支持预编译SQL语句,能有效防止SQL注入并提升性能。  

     增删改操作通常使用executeUpdate()方法,接收INSERT、DELETE或UPDATE语句,返回受影响的行数。例如插入数据时,可通过占位符?配合PreparedStatement的setXxx()方法动态赋值。查询操作则通过executeQuery()执行SELECT语句,返回ResultSet结果集,使用next()遍历行并通过getXxx()按列名或索引获取数据。  

     资源释放是关键,需按ResultSet→Statement→Connection顺序在finally块或try-with-resources中关闭,避免内存泄漏。此外,事务管理可通过setAutoCommit(false)手动提交,执行成功后调用commit(),异常时rollback()回滚。JDBC的灵活性与底层控制能力使其成为Java数据库交互的基石,但也需注意SQL注入防范和连接池优化等实践细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值