当前位置:首页 > 后端开发 > 正文

Java JDBC快速上手教程

Java JDBC编程步骤:加载驱动、建立连接、创建语句对象、执行SQL、处理结果集、关闭资源,使用try-with-resources确保自动释放连接,防止内存泄漏,核心接口:Connection、Statement、ResultSet,需处理SQLException。

Java JDBC编程详解

JDBC(Java Database Connectivity)是Java用于连接和操作数据库的标准API,它提供了一套接口,允许开发者通过统一的SQL语法与不同数据库(如MySQL、Oracle、PostgreSQL等)交互,以下是JDBC的核心步骤和最佳实践,适用于Java 8及以上版本。


JDBC核心步骤

  1. 加载数据库驱动

    使用Class.forName()加载JDBC驱动(Java 6+可省略,但显式声明更可靠):

  2. 建立数据库连接

    通过DriverManager.getConnection()获取连接,需指定URL、用户名和密码:

    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);
  3. 创建Statement对象

    推荐使用PreparedStatement防止SQL载入:

    String sql = "SELECT * FROM users WHERE id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, 101); // 设置参数(索引从1开始)
  4. 执行SQL语句

    Java JDBC快速上手教程 第1张

    • 查询操作:使用executeQuery()返回ResultSet ResultSet resultSet = statement.executeQuery();
    • 更新操作:使用executeUpdate()返回影响行数 int rows = statement.executeUpdate();
    • 处理结果集

      遍历ResultSet获取数据:

      while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); System.out.println("ID: " + id + ", Name: " + name); }
    • 关闭资源

      按ResultSet → Statement → Connection顺序关闭,避免资源泄漏:

      resultSet.close(); statement.close(); connection.close();
    • 关键注意事项

      1. 异常处理

        用try-catch-finally或try-with-resources(推荐)确保资源关闭:

        Java JDBC快速上手教程 第2张

        Java JDBC快速上手教程 第3张

      2. 防SQL载入

        禁止拼接SQL!必须用PreparedStatement传参:

        // 错误示例:String sql = "SELECT * FROM users WHERE name='" + inputName + "'"; PreparedStatement stmt = connection.prepareStatement("SELECT * FROM users WHERE name=?"); stmt.setString(1, inputName); // 安全

      3. 连接池优化

        生产环境使用连接池(如HikariCP、Tomcat JDBC)提升性能:

        HikariConfig config = new HikariConfig(); config.setJdbcUrl(url); config.setUsername(user); config.setPassword(password); try (HikariDataSource dataSource = new HikariDataSource(config); Connection conn = dataSource.getConnection()) { // 操作数据库 }
      4. 完整代码示例(MySQL)

        import java.sql.*; public class JdbcDemo { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/test_db"; String user = "root"; String password = "123456"; try (Connection conn = DriverManager.getConnection(url, user, password); PreparedStatement stmt = conn.prepareStatement("SELECT name, email FROM users WHERE id = ?")) { stmt.setInt(1, 1001); // 设置查询参数 ResultSet rs = stmt.executeQuery(); while (rs.next()) { System.out.println("Name: " + rs.getString("name") + ", Email: " + rs.getString("email")); } } catch (SQLException e) { System.err.println("数据库错误: " + e.getMessage()); } } }


        常见问题解决

        • 驱动类找不到

          检查JAR包是否引入(如MySQL添加mysql-connector-java-8.0.30.jar)。

        • 时区错误

          URL中添加?serverTimezone=UTC。

        • 连接超时

          检查数据库地址、端口、防火墙设置。


        进阶建议

        • 使用ORM框架

          大型项目推荐MyBatis或Hibernate,简化CRUD操作。

        • Spring JDBC模板

          利用JdbcTemplate减少样板代码。

        • 事务管理

          通过connection.setAutoCommit(false)和commit()/rollback()控制事务。

        引用说明

        掌握JDBC是Java开发者操作数据库的基石,遵循以上实践可确保代码安全、高效,并为后续学习ORM框架打下坚实基础。

0