Java中通过DriverManager.getConnection()获取数据库连接,需确保驱动已加载(JDBC 4.0+可自动注册)、URL正确(如MySQL:jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC)、用户名密码有效,并用try-with-resources及时关闭资源。

Java 中通过 DriverManager 获取数据库连接,核心是调用 DriverManager.getConnection() 方法,并确保驱动类已加载、连接 URL 正确、用户名密码有效。
加载数据库驱动(JDBC 4.0+ 通常可省略)
早期 JDBC 需显式调用 Class.forName("com.mysql.cj.jdbc.Driver") 加载驱动;JDBC 4.0 起,只要驱动 JAR 在类路径中,DriverManager 会自动发现并注册服务提供者。但为兼容性或明确控制,仍可保留:
- MySQL 8.x:
Class.forName("com.mysql.cj.jdbc.Driver") - PostgreSQL:
Class.forName("org.postgresql.Driver") - H2(内存数据库):
Class.forName("org.h2.Driver")
构造正确的 JDBC 连接 URL
URL 格式为:jdbc:subprotocol://host:port/database?param1=value1¶m2=value2,不同数据库差异较大:
- MySQL(本地、端口3306、库名 test):
jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC - PostgreSQL:
jdbc:postgresql://localhost:5432/test - H2 内存模式:
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
注意:URL 中的参数(如时区、SSL 设置)常影响连接成败,务必按实际数据库配置调整。
立即学习“Java免费学习笔记(深入)”;
调用 getConnection 获取 Connection 对象
有三种常用重载形式:
-
DriverManager.getConnection(String url)—— 仅 URL(适合无认证的 H2 内存库等) -
DriverManager.getConnection(String url, String user, String password)—— 最常用 -
DriverManager.getConnection(String url, Properties info)—— 适合集中管理连接参数(如加密凭证、连接池配置)
示例(MySQL):
String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password);
异常处理与资源关闭
getConnection() 抛出 SQLException,必须捕获或声明;获取的 Connection 必须显式关闭,否则导致连接泄漏:
- 推荐使用 try-with-resources(Java 7+),自动关闭
Connection、Statement、ResultSet - 若未用 try-with-resources,需在
finally块中调用conn.close() - 生产环境不建议直接用
DriverManager——应使用连接池(如 HikariCP、Druid)管理连接


















