java连接Mysql数据库

Java 连接 MySQL 数据库 完整教程

最新、最简洁、直接能用的 Java 连接 MySQL 方案,包含两种最常用方式:

  1. 原生 JDBC 连接(纯代码,无需框架)
  2. Druid 连接池(企业常用,性能更好)

一、准备工作

1. 导入 MySQL 驱动包(必须)

MySQL 8.0+ 使用最新驱动:

xml

复制代码
<!-- Maven 依赖,直接复制到 pom.xml -->
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.33</version>
</dependency>

非 Maven 项目:手动下载 mysql-connector-j.jar 导入项目

2. 数据库信息(改成你自己的)

java

运行

复制代码
// 数据库地址(MySQL 8.0 必须加时区参数)
String url = "jdbc:mysql://localhost:3306/你的数据库名?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
String username = "root";       // 你的MySQL用户名
String password = "123456";    // 你的MySQL密码

二、方式 1:原生 JDBC 连接(最基础)

完整可运行代码

java

运行

复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JdbcTest {
    public static void main(String[] args) {
        Connection conn = null;

        try {
            // 1. 加载驱动(MySQL 8.0+ 可以省略,自动加载)
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2. 获取连接
            String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
            String user = "root";
            String password = "123456";

            conn = DriverManager.getConnection(url, user, password);
            System.out.println("✅ MySQL 连接成功!");

        } catch (ClassNotFoundException e) {
            System.out.println("❌ 驱动加载失败");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("❌ 数据库连接失败");
            e.printStackTrace();
        } finally {
            // 3. 关闭连接
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

三、方式 2:Druid 连接池(企业推荐)

性能更高、资源复用、防止连接泄漏

1. 先加 Druid 依赖

xml

复制代码
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.20</version>
</dependency>

2. Druid 连接代码

java

运行

复制代码
import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.sql.Connection;
import java.util.Properties;

public class DruidTest {
    public static void main(String[] args) {
        try {
            // 配置
            Properties prop = new Properties();
            prop.setProperty("driverClassName", "com.mysql.cj.jdbc.Driver");
            prop.setProperty("url", "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC");
            prop.setProperty("username", "root");
            prop.setProperty("password", "123456");

            // 创建连接池
            DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);

            // 获取连接
            Connection conn = dataSource.getConnection();
            System.out.println("✅ Druid 连接池连接成功!");

            conn.close(); // 归还连接,不是关闭

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

三、常见报错解决方案

  1. 时区错误 必须加参数:serverTimezone=UTC
  2. Public Key Retrieval is not allowed 加参数:allowPublicKeyRetrieval=true
  3. 连接被拒绝检查 MySQL 服务是否启动、账号密码是否正确
  4. 驱动找不到 MySQL 8.0 驱动类是:com.mysql.cj.jdbc.Driver(多了 cj)

四、JDBC 标准操作步骤(增删改查)

java

运行

复制代码
// 1. 获取连接
Connection conn = ...;

// 2. 创建执行对象
String sql = "SELECT * FROM user";
java.sql.PreparedStatement pstmt = conn.prepareStatement(sql);

// 3. 执行查询
java.sql.ResultSet rs = pstmt.executeQuery();

// 4. 处理结果
while (rs.next()) {
    System.out.println(rs.getString("name"));
}

// 5. 关闭资源
rs.close();
pstmt.close();
conn.close();

总结

  1. MySQL 8.0+ 驱动是 mysql-connector-j
  2. URL 必须带时区参数
  3. 新手用原生 JDBC ,项目用Druid 连接池
  4. 记得关闭连接避免资源泄漏
相关推荐
2301_780789665 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
ClickHouseDB5 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
m0_639906945 小时前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
学长毕设6 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
时间售卖铺6 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw6 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
步行cgn6 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川6 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵6 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
秋天的怀念_David7 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法