杰瑞科技汇

Java连接Oracle需哪些jar包?

需要哪个JAR包?

要连接Oracle数据库,您需要官方提供的 JDBC驱动程序,这个驱动程序的核心JAR包是:

Java连接Oracle需哪些jar包?-图1
(图片来源网络,侵删)
  • ojdbc8.jarojdbc11.jar

  • ojdbc8.jar:

    • 用于连接 Oracle 11g, 12c, 18c, 19c 等较新版本的数据库。
    • 它需要 Java 8 (JDK 8) 或更高版本的JVM来运行。
    • 这是目前最广泛使用的版本。
  • ojdbc11.jar:

    • 用于连接 Oracle 19c 及更高版本的数据库。
    • 它要求 Java 11 (JDK 11) 或更高版本的JVM。
    • 这是未来的趋势,专为模块化Java(JPMS)设计。

对于大多数项目,ojdbc8.jar 是一个安全且兼容性好的选择。

Java连接Oracle需哪些jar包?-图2
(图片来源网络,侵删)

如何获取JAR包?

您可以通过以下几种主要方式获取 ojdbc.jar 文件。

从Oracle官网下载 (最传统的方式)

这是最官方、最可靠的方式,但需要注册Oracle账户。

  1. 访问Oracle官网下载页面:

  2. 选择版本:

    Java连接Oracle需哪些jar包?-图3
    (图片来源网络,侵删)
    • 找到您需要的版本,"Oracle JDBC driver for JDK 8"。
    • 点击 "Download" 按钮。
  3. 接受协议:

    您必须接受许可协议才能下载。

  4. 下载文件:

    • 下载下来的通常是一个 .zip 压缩包,解压后,您可以在 ojdbc8.jarojdbc11.jar 文件夹中找到所需的JAR包。

注意: Oracle官网的下载流程有时会变化,但基本逻辑是选择对应Java版本的驱动。

使用Maven或Gradle依赖管理 (强烈推荐)

这是现代Java项目中最推荐的方式,可以自动管理依赖和版本,无需手动下载和放置JAR包。

使用Maven

您需要在您的 pom.xml 文件中添加以下依赖。

对于 ojdbc8 (适用于JDK 8):

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>19.3.0.0</version> <!-- 请使用您需要的最新版本 -->
</dependency>

对于 ojdbc11 (适用于JDK 11+):

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc11</artifactId>
    <version>21.5.0.0</version> <!-- 请使用您需要的最新版本 -->
</dependency>

Maven会自动从中央仓库下载并管理这个依赖。

使用Gradle

您需要在您的 build.gradlebuild.gradle.kts 文件中添加以下依赖。

对于 ojdbc8 (适用于JDK 8):

implementation 'com.oracle.database.jdbc:ojdbc8:19.3.0.0' // 请使用您需要的最新版本

对于 ojdbc11 (适用于JDK 11+):

implementation 'com.oracle.database.jdbc:ojdbc11:21.5.0.0' // 请使用您需要的最新版本

使用构建工具的插件 (例如Maven Wrapper)

一些项目使用如 ojdbc 这样的第三方Maven仓库,但这通常不是最佳实践,因为它们可能不是官方来源,且稳定性无法保证。强烈建议优先使用Oracle官方的Maven仓库(如上所述)。


如何在代码中使用?

获取到JAR包后,您就可以在Java代码中建立数据库连接了。

步骤1: 添加JAR包到项目路径

  • 非Maven/Gradle项目: 将下载的 ojdbc8.jar 文件复制到您的项目目录下(lib 文件夹),然后在您的IDE(如Eclipse, IntelliJ IDEA)中将其添加到项目的库(Libraries)或构建路径(Build Path)中。
  • Maven/Gradle项目: 无需任何手动操作,构建工具会自动处理。

步骤2: 编写Java连接代码

以下是一个完整的、使用经典的 OracleDataSource 的连接示例。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class OracleConnectionExample {
    // 数据库连接信息 (请根据您的实际情况修改)
    // String dbURL = "jdbc:oracle:thin:@//<hostname>:<port>/<service_name>";
    // String dbURL = "jdbc:oracle:thin:@<hostname>:<port>:<sid>";
    private static final String DB_URL = "jdbc:oracle:thin:@localhost:1521:ORCL"; // 示例URL
    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);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT 'Hello from Oracle!' as message FROM DUAL")) {
            if (conn != null) {
                System.out.println("连接成功!");
            }
            // 处理查询结果
            while (rs.next()) {
                // 通过列名获取数据,更安全
                String message = rs.getString("message");
                System.out.println("查询结果: " + message);
            }
        } catch (SQLException e) {
            System.err.println("连接数据库失败!");
            e.printStackTrace();
        }
    }
}

代码解释:

  1. 加载驱动: 在较新的JDBC驱动(4.0以上)中,通常不需要显式地调用 Class.forName("oracle.jdbc.OracleDriver"),驱动程序会自动注册。
  2. 获取连接: 使用 DriverManager.getConnection() 方法,传入数据库URL、用户名和密码。
    • jdbc:oracle:thin:: 表示使用瘦(Thin)驱动,这是一个纯Java驱动,无需客户端库。
    • @//<host>:<port>/<service_name>: 这是Oracle推荐的标准连接URL格式(Easy Connect Plus)。
    • @<host>:<port>:<sid>: 是较老的服务ID(SID)格式,在某些旧环境或特定配置下可能仍然使用。
  3. 创建语句和执行查询: 创建 Statement 对象,并执行SQL查询。
  4. 处理结果集: 遍历 ResultSet 来获取查询结果。
  5. 关闭资源: 使用 try-with-resources 语法可以确保 Connection, Statement, 和 ResultSet 在代码块执行完毕后自动关闭,防止资源泄漏。

常见问题与解决方案

java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver

原因: JVM在运行时找不到Oracle JDBC驱动的类文件,这意味着 ojdbc8.jar 没有被正确地添加到项目的类路径中。

解决方案:

  • 检查JAR包是否已下载并放置在正确的位置。
  • 在IDE中,右键项目 -> Build Path / Project Structure -> Libraries,确认已添加该JAR包。
  • 如果使用Maven/Gradle,确保 pom.xmlbuild.gradle 中的依赖配置正确,并执行了 mvn clean installgradle build

java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:...

原因: 这通常不是因为找不到驱动类(ClassNotFoundException),而是因为JDBC URL的格式不正确,导致 DriverManager 无法识别应该使用哪个驱动。

解决方案:

  • 仔细检查您的数据库URL是否与您的Oracle数据库实例配置匹配(端口、服务名/SID)。
  • 确保URL以 jdbc:oracle:thin: 开头。

连接被拒绝 (Connection refused)

原因: 无法连接到指定的主机和端口。

  • Oracle数据库服务未启动
  • 防火墙阻止了1521端口
  • 数据库监听器配置错误,没有在指定的端口上监听。

解决方案:

  • 确认Oracle数据库服务正在运行。
  • 检查服务器的防火墙设置。
  • 在数据库服务器上使用 lsnrctl status 命令检查监听器状态。
任务 推荐方法 说明
获取JAR包 Maven/Gradle 依赖 最简单、最可靠,自动管理版本和依赖。
Oracle官网下载 适用于无法使用Maven/Gradle的旧项目。
核心JAR包 ojdbc8.jar 兼容性好,适用于JDK 8+和大多数Oracle版本。
ojdbc11.jar 适用于JDK 11+和最新的Oracle数据库。
代码实现 DriverManager 经典、简单的方式,适合大多数场景。
OracleDataSource 功能更强大,支持连接池等高级特性。

希望这份详细的指南能帮助您顺利解决Java连接Oracle数据库的问题!

分享:
扫描分享到社交APP
上一篇
下一篇