package work.javaweb08; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class DBUtils { public static Connection getConn(){ Connection connection = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection( "jdbc:oracle:thin:@127.0.0.1:1521:xe" + "?useUnicode=true&characterEncoding=utf-8", "system","123456" ); } catch (Exception throwables) { throwables.printStackTrace();} return connection;} public static void close(Connection conn, Statement statement, ResultSet rs){ if(conn != null){ try { conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } finally { conn = null;}} if(statement != null){ try { statement.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } finally { statement = null;}} if(rs != null){ try { rs.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } finally { rs = null; } } } public static void close(Connection conn, Statement statement){ if(conn != null){ try {conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } finally { conn = null;}} if(statement != null){ try { statement. statement.close();} catch (SQLException throwables) { throwables.printStackTrace(); } finally { statement = null;
时间: 2025-03-23 22:06:40 浏览: 38
### 数据库连接与关闭方法分析
在 Java 中处理 MySQL 和 Oracle 的数据库连接及其资源释放逻辑是一个常见的开发需求。以下是针对该主题的具体说明。
#### 1. **MySQL 驱动程序的 URL 配置**
对于 MySQL 数据库,其 JDBC 连接字符串通常采用如下格式:
```plaintext
jdbc:mysql://<host>:<port>/<database>?useSSL=false&serverTimezone=UTC
```
其中 `<host>` 是数据库服务器地址,`<port>` 默认为 `3306`,`<database>` 表示目标数据库名称。参数部分如 `useSSL=false` 和 `serverTimezone=UTC` 可用于调整 SSL 设置和时区配置[^1]。
#### 2. **Oracle 数据库的 URL 配置**
Oracle 数据库的 JDBC 连接字符串则有所不同,常见格式有以下两种:
- 使用 SID:
```plaintext
jdbc:oracle:thin:@//<host>:<port>/<sid>
```
- 使用 Service Name:
```plaintext
jdbc:oracle:thin:@<host>:<port>:<service_name>
```
这里 `<host>` 是主机名或 IP 地址,`<port>` 默认为 `1521`,而 `<sid>` 或 `<service_name>` 则分别表示实例 ID 或服务名称[^2]。
#### 3. **资源释放逻辑**
为了确保数据库连接被正确关闭并避免内存泄漏,推荐使用 try-with-resources 结构来管理资源生命周期。例如:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class DatabaseConnectionExample {
public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "password";
try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password);
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users")) {
// 执行查询或其他操作...
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
上述代码片段展示了如何通过自动关闭机制简化资源管理过程。无论是否发生异常,try 块结束时都会自动调用 `close()` 方法以释放相关资源[^3]。
#### 4. **池化数据源的行为控制**
当使用连接池技术(如 HikariCP 或 DBCP)时,可以通过设置特定属性影响错误恢复策略。比如 `"acquireRetryAttempts"` 参数决定了尝试重新获取连接的最大次数;而 `"breakAfterAcquireFailure"` 属性定义了失败后的行为模式——设为 true 将使整个数据源失效并停止工作,反之仅让当前请求失败而不影响后续操作。
---
###
阅读全文
相关推荐
















