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. 记得关闭连接避免资源泄漏
相关推荐
大妮哟2 小时前
postgresql数据库日志量异常原因排查
数据库·postgresql·oracle
云原生指北2 小时前
命令行四件套:fd-rg-fzf-bat
java·大数据·elasticsearch
还是做不到嘛\.3 小时前
Dvwa靶场-SQL Injection (Blind)-基于sqlmap
数据库·sql·web安全
人间打气筒(Ada)3 小时前
go实战案例:如何通过 Service Meh 实现熔断和限流
java·开发语言·golang·web·istio·service mesh·熔断限流
不写八个3 小时前
PHP教程004:php链接mysql数据库
数据库·mysql·php
Dylan~~~3 小时前
深度解析Cassandra:分布式数据库的王者之路
数据库·分布式
主宰者4 小时前
C# CommunityToolkit.Mvvm全局事件
java·前端·c#
计算机学姐4 小时前
基于SpringBoot的咖啡店管理系统【个性化推荐+数据可视化统计+配送信息】
java·vue.js·spring boot·后端·mysql·信息可视化·tomcat
荒川之神4 小时前
Oracle HR 模式递归函数练习(基于 employees 表)
数据库·oracle