java连接mysql需引入mysql-connector-j依赖,8.0+版本自动注册驱动,url须含servertimezone、characterencoding等参数,用try-with-resources获取connection并验证。

Java 中加载 MySQL 的 JDBC 驱动并建立 Connection 连接,核心是引入驱动包、注册驱动(现代版本可省略)、构造连接 URL 并调用 DriverManager.getConnection()。从 MySQL 8.0+ 和 JDBC 4.0 起,驱动会自动注册,无需手动 Class.forName()。
添加 MySQL Connector/J 依赖
确保项目中包含官方 JDBC 驱动(mysql-connector-j)。Maven 项目在 pom.xml 中添加:
<dependency><groupid>mysql</groupid><artifactid>mysql-connector-j</artifactid><version>8.3.0</version></dependency>
注意:MySQL 8.0+ 必须使用 mysql-connector-j(不是旧版 mysql-connector-java),且推荐用最新稳定版。
构造标准 JDBC 连接 URL
MySQL 8+ 推荐使用带时区和编码参数的 URL,避免乱码和时区异常。格式如下:
jdbc:mysql://host:port/database?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
-
host:数据库地址,如
localhost或 IP -
port:默认
3306 - database:目标数据库名(需提前创建)
- serverTimezone:必须显式指定,否则可能报时区错误
-
characterEncoding:设为
utf8或utf8mb4支持 emoji -
useSSL=false:开发环境可关闭 SSL;生产建议配置 SSL 或设为
true - allowPublicKeyRetrieval=true:配合 MySQL 8 默认认证插件(caching_sha2_password)必需
获取 Connection 实例(推荐 try-with-resources)
直接调用 DriverManager.getConnection(),传入 URL、用户名和密码:
String url = "jdbc:mysql://localhost:3306/testdb?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true";
String user = "root";
String password = "123456";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
System.out.println("连接成功:" + conn.isValid(1));
} catch (SQLException e) {
e.printStackTrace();
}
说明:
- 无需
Class.forName("com.mysql.cj.jdbc.Driver")—— JDBC 4.0+ 自动服务发现机制已内置 - 使用
try-with-resources可自动关闭连接,避免资源泄漏 - 若连接失败,常见原因包括:MySQL 未启动、用户权限不足、防火墙拦截、URL 参数缺失或错误
验证连接与简单查询示例
拿到 Connection 后,可立即执行测试语句确认连通性:
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT VERSION()")) {
if (rs.next()) {
System.out.println("MySQL 版本:" + rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
这一步能快速验证驱动、网络、账号、权限是否全部就绪。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











