杰瑞科技汇

Java连接Oracle需哪些jar包?

获取 Oracle JDBC 驱动 JAR 包

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

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

驱动类型

  1. Thin 驱动

    • 特点:纯 Java 实现,不依赖 Oracle 客户端软件,这是最常用、最推荐的驱动,尤其是在现代应用(如 Web 应用、微服务)中。
    • 适用场景:应用服务器可以直接通过网络访问 Oracle 数据库。
    • JAR 名称ojdbc8.jar (针对 JDK 8) 或 ojdbc11.jar (针对 JDK 11 及更高版本)。
  2. OCI (Oracle Call Interface) 驱动

    • 特点:需要本地安装 Oracle 客户端软件,并通过 JNI (Java Native Interface) 调用,性能可能略高,但配置复杂,且限制了应用的可移植性。
    • 适用场景:需要高级功能(如高级网络压缩)或对性能有极致要求的特定环境。
    • JAR 名称ojdbc8.jarojdbc11.jar (与 Thin 驱动使用同一个 JAR,但配置方式不同)。

对于绝大多数 Java 使用 Thin 驱动就足够了

下载步骤

  1. 访问 Oracle 官网:前往 Oracle 官方的 JDBC 驱动下载页面。

    Java连接Oracle需哪些jar包?-图2
    (图片来源网络,侵删)
  2. 选择版本:根据你的 Oracle 数据库版本和 JDK 版本选择合适的驱动。

    • 注意:驱动版本不一定要和数据库版本完全一致,但建议使用较高版本或兼容的版本,Oracle 19c 数据库通常可以使用 ojdbc8.jarojdbc10.jar/ojdbc11.jar
    • 推荐:如果你的 JDK 是 8,下载 ojdbc8.jar;如果是 JDK 11 或更高,下载 ojdbc11.jar
  3. 接受许可协议:在下载页面,你需要勾选 "Accept License Agreement"。

  4. 下载 JAR:点击 "Download" 按钮,下载 ojdbcX.jar 文件(ojdbc8.jar)。


在项目中配置 JAR 包

下载完成后,你需要将这个 JAR 包添加到你的 Java 项目的 Classpath 中,具体方法取决于你使用的开发工具或构建工具。

使用 IDE (如 IntelliJ IDEA 或 Eclipse)

这是最简单直接的方式。

  1. 打开你的项目
  2. 添加 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

使用 Maven (推荐)

Maven 是最主流的 Java 项目管理工具,可以自动下载和管理依赖。

  1. 确保你的项目是 Maven 项目

  2. pom.xml 文件中添加依赖

    • 重要提示:由于 Oracle 的许可协议,ojdbc JAR 包不在 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>

使用 Gradle

与 Maven 类似,Gradle 也需要处理非中央仓库的依赖。

build.gradlebuild.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: 数据库服务器地址 (如 localhost168.1.100)
    • port: 监听端口 (默认为 1521)
    • SIDService 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:...

  • 原因
    1. 驱动类没有被加载,虽然现代 JDBC 4.0+ 版本会自动加载,但有时可能需要显式加载。
    2. URL 格式不正确。
  • 解决
    1. 可以尝试在获取连接前显式加载驱动(不推荐,仅作排查):
      Class.forName("oracle.jdbc.OracleDriver");
    2. 仔细检查你的 DB_URL,确保 hostnameportSID/Service Name 都正确无误。

Q3: java.net.ConnectException: Connection refused

  • 原因:应用无法连接到指定的 hostnameport
  • 解决
    1. 确认 Oracle 数据库服务正在运行。
    2. 确认 hostnameport (通常是 1521) 是正确的。
    3. 检查防火墙是否阻止了 1521 端口的连接。
    4. 在数据库服务器上,使用 lsnrctl status 命令检查监听器是否正在监听正确的地址和端口。

Q4: java.sql.SQLException: Invalid username/password; logon denied

  • 原因:用户名或密码错误。
  • 解决:检查代码中的 USERPASS 变量是否与数据库中的凭据完全一致。
  1. 下载:从 Oracle 官网下载与你 JDK 和数据库版本匹配的 ojdbcX.jar
  2. 配置:通过 IDE、Maven 或 Gradle 将 JAR 包添加到项目 Classpath 中。
  3. 编码:使用正确的 JDBC URL 格式(推荐使用 Service Name)、用户名和密码,编写 Java 代码进行连接和操作。
  4. 调试:遇到错误时,根据异常信息(如 ClassNotFoundException, SQLException)排查 Classpath、URL、网络连接或凭据问题。
分享:
扫描分享到社交APP
上一篇
下一篇