JDBC入门

JDBC 简介

JDBC(Java Database Connectivity)是 Java 提供的用于连接和操作数据库的标准 API。它允许 Java 程序通过统一的接口访问多种关系型数据库(如 MySQL、Oracle、PostgreSQL 等),执行 SQL 语句并处理结果。

JDBC 的核心功能包括:

  • 连接数据库
  • 执行 SQL 语句(增删改查)
  • 处理查询结果
  • 管理事务

环境准备

  1. 安装数据库
    使用 MySQL 作为示例数据库,需提前安装并启动 MySQL 服务。

  2. 创建数据库和表
    在 MySQL 中执行以下 SQL 创建数据库和表:

    CREATE DATABASE IF NOT EXISTS student_db;
    USE student_db;
    CREATE TABLE student (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(50) NOT NULL,
        age INT
    );
    

  3. IDE 配置
    使用 IntelliJ IDEA 创建 Java 项目,并配置 JDBC 驱动依赖。


项目搭建步骤

1. 创建 Maven 项目

在 IDEA 中新建 Maven 项目,配置 pom.xml 添加 MySQL JDBC 驱动依赖:

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.34</version>
    </dependency>
</dependencies>

2. 编写 JDBC 代码

创建 JdbcDemo.java 文件,实现以下功能:

  • 连接数据库
  • 插入一条学生数据
  • 查询所有学生数据
import java.sql.*;

public class JdbcDemo {
    // 数据库连接信息
    private static final String URL = "jdbc:mysql://localhost:3306/student_db";
    private static final String USER = "root";
    private static final String PASSWORD = "your_mysql_password";

    public static void main(String[] args) {
        Connection connection = null;
        try {
            // 1. 加载驱动(可选,JDBC 4.0+ 自动加载)
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2. 建立数据库连接
            connection = DriverManager.getConnection(URL, USER, PASSWORD);

            // 3. 插入数据
            insertStudent(connection, "张三", 20);

            // 4. 查询数据
            queryStudents(connection);

        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        } finally {
            // 5. 关闭连接
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    // 插入学生数据
    private static void insertStudent(Connection connection, String name, int age) throws SQLException {
        String sql = "INSERT INTO student (name, age) VALUES (?, ?)";
        try (PreparedStatement statement = connection.prepareStatement(sql)) {
            statement.setString(1, name);
            statement.setInt(2, age);
            int rows = statement.executeUpdate();
            System.out.println("插入成功,影响行数: " + rows);
        }
    }

    // 查询所有学生
    private static void queryStudents(Connection connection) throws SQLException {
        String sql = "SELECT * FROM student";
        try (Statement statement = connection.createStatement();
             ResultSet resultSet = statement.executeQuery(sql)) {
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.printf("ID: %d, 姓名: %s, 年龄: %d\n", id, name, age);
            }
        }
    }
}


代码逻辑详解

1. 数据库连接
  • DriverManager.getConnection() 用于建立与数据库的连接,需传入 URL、用户名和密码。
  • MySQL 的 URL 格式:jdbc:mysql://主机:端口/数据库名
2. 执行 SQL
  • 插入数据:使用 PreparedStatement 防止 SQL 注入,通过 ? 占位符动态设置参数。
  • 查询数据:通过 ResultSet 遍历结果集,逐行获取字段值。
3. 资源释放
  • 所有 JDBC 资源(ConnectionStatementResultSet)需在 finally 块中关闭,避免内存泄漏。

运行结果

  1. 控制台输出插入成功的日志:
    插入成功,影响行数: 1
    

  2. 查询结果示例:
    ID: 1, 姓名: 张三, 年龄: 20
    


常见问题

  1. 驱动报错
    确认 pom.xml 中的 MySQL 驱动版本与本地 MySQL 版本匹配。
  2. 连接失败
    检查 MySQL 服务是否启动,用户名和密码是否正确。
  3. 时区问题
    在 URL 中添加时区参数:
    jdbc:mysql://localhost:3306/student_db?serverTimezone=UTC
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值