获取 Oracle JDBC 驱动 JAR 包
你需要下载正确的 JDBC 驱动,Oracle 官方提供了两种主要的驱动:

驱动类型
-
Thin 驱动
- 特点:纯 Java 实现,不依赖 Oracle 客户端软件,这是最常用、最推荐的驱动,尤其是在现代应用(如 Web 应用、微服务)中。
- 适用场景:应用服务器可以直接通过网络访问 Oracle 数据库。
- JAR 名称:
ojdbc8.jar(针对 JDK 8) 或ojdbc11.jar(针对 JDK 11 及更高版本)。
-
OCI (Oracle Call Interface) 驱动
- 特点:需要本地安装 Oracle 客户端软件,并通过 JNI (Java Native Interface) 调用,性能可能略高,但配置复杂,且限制了应用的可移植性。
- 适用场景:需要高级功能(如高级网络压缩)或对性能有极致要求的特定环境。
- JAR 名称:
ojdbc8.jar或ojdbc11.jar(与 Thin 驱动使用同一个 JAR,但配置方式不同)。
对于绝大多数 Java 使用 Thin 驱动就足够了。
下载步骤
-
访问 Oracle 官网:前往 Oracle 官方的 JDBC 驱动下载页面。
(图片来源网络,侵删) -
选择版本:根据你的 Oracle 数据库版本和 JDK 版本选择合适的驱动。
- 注意:驱动版本不一定要和数据库版本完全一致,但建议使用较高版本或兼容的版本,Oracle 19c 数据库通常可以使用
ojdbc8.jar或ojdbc10.jar/ojdbc11.jar。 - 推荐:如果你的 JDK 是 8,下载
ojdbc8.jar;如果是 JDK 11 或更高,下载ojdbc11.jar。
- 注意:驱动版本不一定要和数据库版本完全一致,但建议使用较高版本或兼容的版本,Oracle 19c 数据库通常可以使用
-
接受许可协议:在下载页面,你需要勾选 "Accept License Agreement"。
-
下载 JAR:点击 "Download" 按钮,下载
ojdbcX.jar文件(ojdbc8.jar)。
在项目中配置 JAR 包
下载完成后,你需要将这个 JAR 包添加到你的 Java 项目的 Classpath 中,具体方法取决于你使用的开发工具或构建工具。
使用 IDE (如 IntelliJ IDEA 或 Eclipse)
这是最简单直接的方式。
- 打开你的项目。
- 添加 JAR 库:
- IntelliJ IDEA:
- 右键点击你的项目或模块 ->
Open Module Settings(或F4)。 - 选择
Libraries-> 点击 号 ->Java。 - 浏览并选择你刚刚下载的
ojdbcX.jar文件。 - 点击
OK,IDE 会自动将其添加到 Classpath 中。
- 右键点击你的项目或模块 ->
- Eclipse:
- 右键点击你的项目 ->
Build Path->Configure Build Path。 - 选择
Libraries标签页 -> 点击Add External JARs...。 - 浏览并选择
ojdbcX.jar文件 ->Open。 - 点击
Apply and Close。
- 右键点击你的项目 ->
- IntelliJ IDEA:
使用 Maven (推荐)
Maven 是最主流的 Java 项目管理工具,可以自动下载和管理依赖。
-
确保你的项目是 Maven 项目。
-
在
pom.xml文件中添加依赖:- 重要提示:由于 Oracle 的许可协议,
ojdbcJAR 包不在 Maven 中央仓库中,你需要手动将其安装到你的本地 Maven 仓库,或者使用一个包含其 POM 文件的第三方仓库。
方法 A:安装到本地仓库 (推荐)
在你的命令行中,运行以下命令,将下载的 JAR 安装到你的本地 Maven 仓库中:
# Windows mvn install:install-file -Dfile=C:\path\to\your\ojdbc8.jar -DgroupId=com.oracle.database.jdbc -DartifactId=ojdbc8 -Dversion=19.3.0.0 -Dpackaging=jar # macOS / Linux mvn install:install-file -Dfile=/path/to/your/ojdbc8.jar -DgroupId=com.oracle.database.jdbc -DartifactId=ojdbc8 -Dversion=19.3.0.0 -Dpackaging=jar
-Dfile: JAR 文件的绝对路径。-DgroupId,-DartifactId,-Dversion: 你自定义的坐标,后续在pom.xml中使用。
在
pom.xml中添加依赖:<dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>19.3.0.0</version> </dependency>方法 B:使用第三方仓库
你可以直接在
pom.xml中添加依赖,Maven 会从第三方仓库(如 Oracle 官方 Maven 仓库)下载。<dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>19.8.0.0</version> </dependency> - 重要提示:由于 Oracle 的许可协议,
使用 Gradle
与 Maven 类似,Gradle 也需要处理非中央仓库的依赖。
在 build.gradle 或 build.gradle.kts 文件中添加:
Groovy DSL (build.gradle)
repositories {
mavenCentral()
// 如果需要,可以添加 Oracle 的 Maven 仓库
// maven { url 'https://maven.oracle.com' }
}
dependencies {
implementation 'com.oracle.database.jdbc:ojdbc8:19.8.0.0'
}
Kotlin DSL (build.gradle.kts)
repositories {
mavenCentral()
// 如果需要,可以添加 Oracle 的 Maven 仓库
// maven("https://maven.oracle.com")
}
dependencies {
implementation("com.oracle.database.jdbc:ojdbc8:19.8.0.0")
}
编写 Java 连接代码
以下是使用 Thin 驱动 连接 Oracle 数据库的完整代码示例。
准备工作
- 确保你的 Oracle 数据库服务正在运行。
- 你有数据库的连接信息:
hostname: 数据库服务器地址 (如localhost或168.1.100)port: 监听端口 (默认为1521)SID或Service Name: 数据库标识符,现代 Oracle 数据库推荐使用Service Name。
连接 URL 格式
-
使用 SID:
jdbc:oracle:thin:@<hostname>:<port>:<SID>- 示例:
jdbc:oracle:thin:@localhost:1521:ORCL
- 示例:
-
使用 Service Name (推荐):
jdbc:oracle:thin:@<hostname>:<port>/<service_name>- 示例:
jdbc:oracle:thin:@localhost:1521/ORCLCDB
- 示例:
Java 代码示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
public class OracleConnectionExample {
// 数据库连接信息 - 请根据你的实际情况修改
private static final String DB_URL = "jdbc:oracle:thin:@localhost:1521/ORCLCDB"; // 使用 Service Name
// private static final String DB_URL = "jdbc:oracle:thin:@localhost:1521:ORCL"; // 使用 SID
private static final String USER = "your_username"; // 你的数据库用户名
private static final String PASS = "your_password"; // 你的数据库密码
public static void main(String[] args) {
// 使用 try-with-resources 语句,确保连接、语句和结果集在使用后被自动关闭
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS)) {
if (conn != null) {
System.out.println("连接成功!");
// 执行一个简单的查询
String sql = "SELECT 'Hello from Oracle' as message FROM DUAL";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
// 处理结果集
while (rs.next()) {
// 通过列名获取数据
String message = rs.getString("message");
System.out.println("查询结果: " + message);
}
}
}
} catch (SQLException e) {
System.err.println("连接数据库失败!");
e.printStackTrace();
}
}
}
常见问题与解决
Q1: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
- 原因:JAR 包没有正确添加到项目的 Classpath 中。
- 解决:检查你的 IDE 或构建工具(Maven/Gradle)的配置,确保
ojdbcX.jar已被正确引入。
Q2: java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:...
- 原因:
- 驱动类没有被加载,虽然现代 JDBC 4.0+ 版本会自动加载,但有时可能需要显式加载。
- URL 格式不正确。
- 解决:
- 可以尝试在获取连接前显式加载驱动(不推荐,仅作排查):
Class.forName("oracle.jdbc.OracleDriver"); - 仔细检查你的
DB_URL,确保hostname、port和SID/Service Name都正确无误。
- 可以尝试在获取连接前显式加载驱动(不推荐,仅作排查):
Q3: java.net.ConnectException: Connection refused
- 原因:应用无法连接到指定的
hostname和port。 - 解决:
- 确认 Oracle 数据库服务正在运行。
- 确认
hostname和port(通常是1521) 是正确的。 - 检查防火墙是否阻止了
1521端口的连接。 - 在数据库服务器上,使用
lsnrctl status命令检查监听器是否正在监听正确的地址和端口。
Q4: java.sql.SQLException: Invalid username/password; logon denied
- 原因:用户名或密码错误。
- 解决:检查代码中的
USER和PASS变量是否与数据库中的凭据完全一致。
- 下载:从 Oracle 官网下载与你 JDK 和数据库版本匹配的
ojdbcX.jar。 - 配置:通过 IDE、Maven 或 Gradle 将 JAR 包添加到项目 Classpath 中。
- 编码:使用正确的 JDBC URL 格式(推荐使用 Service Name)、用户名和密码,编写 Java 代码进行连接和操作。
- 调试:遇到错误时,根据异常信息(如
ClassNotFoundException,SQLException)排查 Classpath、URL、网络连接或凭据问题。
