JDBC

公子初心
2023-12-11 / 0 评论 / 77 阅读 / 正在检测是否收录...

1. JDBC 概念

JDBC 就是使用 Java 语言操作关系型数据库的一套 API
全称:(Java DataBase Connectivity) Java 数据库连接

2. JDBC 本质

官方 (sun 公司) 定义的一套操作所有关系型数据库的规则,即接口各个数据库厂商去实现这套接口,提供数据库驱动 iar 包我们可以使用这套接口 (JDBC) 编程,真正执行的代码是驱动 iar 包中的实现类 同一套 Java 代码,操作不同的关系型数据库
lq0a6srg.png

3.JDBC 好处

各数据库厂商使用相同的接口,Java 代码不需要针对不同数据库分别开发可随时替换底层数据库,访问数据库的 Java 代码基本不变

4. 使用过程

4.1 创建工程,导入驱动 jar 包

lq0a7ha0.png

  1. 创建项目
    lq0a7pok.png
  2. 创建目录命名 lib 用于存放驱动 jar 包
    lq0a8d1o.png
    lq0afgwc.png
  3. 当前工程识别 jar 包 右键 add as Library
    lq0a8oiw.png
    4.src 右键新建类文件
    lq0a9873.png

    import java.sql.*;
    
    /**
     * JDBC 实现 MySQL 增删改查示例
     */
    public class JdbcDemo {
     // 数据库连接信息(根据你的实际环境修改)
     private static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&characterEncoding=utf8";
     private static final String USER = "root"; // 你的数据库用户名
     private static final String PASSWORD = "root"; // 你的数据库密码
    
     // 获取数据库连接
     private static Connection getConnection() {
         Connection conn = null;
         try {
             // 1. 加载驱动(MySQL 8.0+ 可省略,自动加载)
             Class.forName("com.mysql.cj.jdbc.Driver");
             // 2. 获取连接
             conn = DriverManager.getConnection(URL, USER, PASSWORD);
         } catch (ClassNotFoundException | SQLException e) {
             e.printStackTrace();
         }
         return conn;
     }
    
     // 新增数据(Create)
     public static void insertUser(String name, int age, String email) {
         String sql = "INSERT INTO user(name, age, email) VALUES (?, ?, ?)";
         try (Connection conn = getConnection();
              // 使用 PreparedStatement 防止 SQL 注入
              PreparedStatement pstmt = conn.prepareStatement(sql)) {
             // 设置参数(? 占位符从 1 开始)
             pstmt.setString(1, name);
             pstmt.setInt(2, age);
             pstmt.setString(3, email);
             // 执行增删改操作使用 executeUpdate(),返回受影响的行数
             int affectedRows = pstmt.executeUpdate();
             System.out.println("新增成功,受影响行数:" + affectedRows);
         } catch (SQLException e) {
             e.printStackTrace();
         }
     }
    
     // 查询数据(Read)
     public static void queryUsers() {
         String sql = "SELECT id, name, age, email FROM user";
         try (Connection conn = getConnection();
              PreparedStatement pstmt = conn.prepareStatement(sql);
              // 执行查询操作使用 executeQuery(),返回 ResultSet 结果集
              ResultSet rs = pstmt.executeQuery()) {
             System.out.println("===== 查询结果 =====");
             // 遍历结果集
             while (rs.next()) {
                 int id = rs.getInt("id");
                 String name = rs.getString("name");
                 int age = rs.getInt("age");
                 String email = rs.getString("email");
                 System.out.printf("id: %d, 姓名: %s, 年龄: %d, 邮箱: %s%n", id, name, age, email);
             }
         } catch (SQLException e) {
             e.printStackTrace();
         }
     }
    
     // 修改数据(Update)
     public static void updateUser(int id, int newAge) {
         String sql = "UPDATE user SET age = ? WHERE id = ?";
         try (Connection conn = getConnection();
              PreparedStatement pstmt = conn.prepareStatement(sql)) {
             pstmt.setInt(1, newAge);
             pstmt.setInt(2, id);
             int affectedRows = pstmt.executeUpdate();
             System.out.println("修改成功,受影响行数:" + affectedRows);
         } catch (SQLException e) {
             e.printStackTrace();
         }
     }
    
     // 删除数据(Delete)
     public static void deleteUser(int id) {
         String sql = "DELETE FROM user WHERE id = ?";
         try (Connection conn = getConnection();
              PreparedStatement pstmt = conn.prepareStatement(sql)) {
             pstmt.setInt(1, id);
             int affectedRows = pstmt.executeUpdate();
             System.out.println("删除成功,受影响行数:" + affectedRows);
         } catch (SQLException e) {
             e.printStackTrace();
         }
     }
    
     // 主方法测试
     public static void main(String[] args) {
         // 1. 新增一条数据
         insertUser("李思", 26, "zhangsan@test.com");
    //         2. 查询所有数据
         queryUsers();
         // 3. 修改 id=1 的用户年龄为 26
         updateUser(1, 26);
         // 4. 再次查询验证修改结果
         queryUsers();
         // 5. 删除 id=1 的用户
         deleteUser(1);
         // 6. 最终查询验证删除结果
         queryUsers();
     }
    }
0

评论 (0)

取消