Java 连接 MySQL 数据库 完整教程
最新、最简洁、直接能用的 Java 连接 MySQL 方案,包含两种最常用方式:
- 原生 JDBC 连接(纯代码,无需框架)
- 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();
}
}
}
三、常见报错解决方案
- 时区错误 必须加参数:
serverTimezone=UTC - Public Key Retrieval is not allowed 加参数:
allowPublicKeyRetrieval=true - 连接被拒绝检查 MySQL 服务是否启动、账号密码是否正确
- 驱动找不到 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();
总结
- MySQL 8.0+ 驱动是
mysql-connector-j - URL 必须带时区参数
- 新手用原生 JDBC ,项目用Druid 连接池
- 记得关闭连接避免资源泄漏