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 分钟前
基于A2A协议的生产应用实践指南(Java)
java·开发语言·算法·agent
后端漫漫11 分钟前
Redis 配置文件与服务功能
java·redis
Dwzun12 分钟前
基于Java+SpringBoot+Vue的校园二手物品置换系统设计与实现【附源码+文档+部署视频+讲解】
java·开发语言·spring boot
m0_6403093014 分钟前
如何用SQL统计每组的平均值同时显示原行_OVER子句
jvm·数据库·python
polaris063017 分钟前
Spring Boot 项目开发流程全解析
java·spring boot·log4j
qq_3721542318 分钟前
Redis如何在应用启动时预热缓存数据
jvm·数据库·python
2601_9498153318 分钟前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
解救女汉子23 分钟前
CSS如何利用CSS变量进行渐变色管理_提升渐变配置的灵活性
jvm·数据库·python
zuowei288928 分钟前
spring实例化对象的几种方式(使用XML配置文件)
xml·java·spring
C、空白格29 分钟前
Java集成Vosk实现离线语音识别
java·开发语言·语音识别