JDBC基础知识

JDBC(Java Database Connectivity)是Java语言中用于连接和操作数据库的标准API。以下是JDBC的详细解释:

1. JDBC简介

定义:JDBC是Java提供的一套用于执行SQL语句的API,它允许Java应用程序与各种关系型数据库(如MySQL、Oracle、SQL Server等)进行交互。

作用:通过JDBC,Java程序可以连接数据库、执行SQL查询、处理查询结果,以及管理数据库事务。

2. JDBC核心组件

2.1. DriverManager:

负责管理数据库驱动程序,用于建立与数据库的连接。
通过DriverManager.getConnection()方法获取数据库连接。

2.2. Connection:

表示与数据库的会话,用于执行SQL语句和管理事务。
通过Connection对象可以创建Statement、PreparedStatement或CallableStatement对象。

2.3. Statement:

用于执行静态SQL语句(如SELECT、INSERT、UPDATE、DELETE等)。
适用于简单查询,但容易受到SQL注入攻击。

2.4. PreparedStatement:

预编译SQL语句,提高执行效率并防止SQL注入。
通过?占位符传递参数,更安全且高效。

2.5. CallableStatement:

用于调用数据库存储过程或函数。
支持输入参数、输出参数和返回值。

2.6. ResultSet:

表示SQL查询的结果集,用于遍历和处理查询结果。
通过ResultSet对象可以获取查询结果中的每一行数据。

3. JDBC工作流程

3.1. 加载驱动:

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

3.2. 建立连接:

   Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password");

3.3. 创建Statement:

   Statement stmt = conn.createStatement();
   // 或使用PreparedStatement
   PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE id = ?");
   pstmt.setInt(1, 1);

3.4. 执行SQL:

   ResultSet rs = stmt.executeQuery("SELECT * FROM users");
   // 或使用PreparedStatement
   ResultSet rs = pstmt.executeQuery();

3.5. 处理结果:

   while (rs.next()) {
       String name = rs.getString("name");
       System.out.println(name);
   }

3.6. 关闭资源:

   rs.close();
   stmt.close();
   conn.close();

4. JDBC的优势

  • 跨数据库兼容:JDBC支持多种数据库,只需更换驱动即可切换数据库。
  • 安全性:通过PreparedStatement防止SQL注入攻击。
  • 性能:预编译SQL语句提高执行效率。
  • 事务管理:支持数据库事务的提交、回滚和保存点。

5. JDBC的局限性

  • 代码冗余:需要手动管理连接、Statement和ResultSet的关闭。
  • 资源泄漏风险:如果未正确关闭资源,可能导致内存泄漏。
  • 复杂查询支持有限:对于复杂查询,JDBC不如ORM框架(如Hibernate、MyBatis)方便。

6. 实际应用场景

  • Web应用:连接数据库存储用户信息、订单数据等。
  • 企业应用:处理业务逻辑和数据库交互。
  • 数据分析:执行复杂查询和数据处理。