java如何连接oracle数据库
使用JDBC连接Oracle数据库
确保已安装Oracle JDBC驱动(如ojdbc8.jar或ojdbc10.jar),驱动需添加到项目依赖中。以下是连接步骤:
1. 加载驱动类
Class.forName("oracle.jdbc.driver.OracleDriver");
2. 建立数据库连接
使用DriverManager.getConnection()方法,需提供URL、用户名和密码:
String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
String username = "your_username";
String password = "your_password";
Connection connection = DriverManager.getConnection(url, username, password);
- URL格式说明:
jdbc:oracle:thin:@host:port:SID(或服务名替换SID)
使用连接池(以HikariCP为例)
1. 添加依赖 Maven项目中需包含:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.0.1</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.9.0.0</version>
</dependency>
2. 配置连接池
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:ORCL");
config.setUsername("your_username");
config.setPassword("your_password");
config.setMaximumPoolSize(10);
HikariDataSource dataSource = new HikariDataSource(config);
Connection connection = dataSource.getConnection();
异常处理与资源释放
1. 使用try-with-resources 确保连接、Statement和ResultSet自动关闭:
try (Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM employees")) {
while (rs.next()) {
System.out.println(rs.getString("employee_name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
2. 手动关闭资源 若未使用try-with-resources,需在finally块中关闭:
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, pass);
// 执行操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try { conn.close(); }
catch (SQLException e) { e.printStackTrace(); }
}
}
常见参数配置
1. 连接超时设置
config.setConnectionTimeout(30000); // 30秒
2. 验证连接有效性
config.setConnectionTestQuery("SELECT 1 FROM DUAL");
3. 使用TNS别名连接 URL格式:

String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=servicename)))";
注意事项
- 生产环境避免硬编码凭据,建议使用配置文件或环境变量。
- SID与服务名不同,需根据Oracle版本选择正确标识。
- 防火墙需开放1521端口(默认监听端口)。






