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. 记得关闭连接避免资源泄漏
相关推荐
程序员黑豆3 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
hey_sml4 小时前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
Doraemomo4 小时前
数据结构-环形链表
java·数据结构·链表
萧瑟余晖6 小时前
Java深入解析篇十七之SpringCloud
java·开发语言
IvorySQL6 小时前
PostgreSQL 日报 | JOIN 与外键优化(8 月 9 日)
数据库·postgresql
是未才6 小时前
从输入 URL 到页面返回:DNS、路由、TLS 与 HTTP 完整链路
java·后端·计算机网络
ltl6 小时前
自治数据库十年回顾:Peloton、NoisePage、OtterTune 到云原生 auto-tuning
数据库
ttod_qzstudio6 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
萧瑟余晖7 小时前
Java深入解析篇十七之Spring Security
java·开发语言·spring
灯澜忆梦8 小时前
【MySQL10】进阶篇 | 索引_#2性能优化
数据库·sql·mysql·性能优化