杰瑞科技汇

java 测试oracle连接

Java 测试 Oracle 连接

以下是一个完整的 Java 示例,用于测试与 Oracle 数据库的连接,这个示例使用 JDBC 驱动程序来建立连接并执行简单的查询。

java 测试oracle连接-图1
(图片来源网络,侵删)

准备工作

  1. 下载 Oracle JDBC 驱动

    • 从 Oracle 官网下载 JDBC 驱动(ojdbc.jar 或 ojdbc8.jar 等)
    • 将驱动 JAR 文件添加到项目的类路径中
  2. 确保数据库连接信息

    • 数据库 URL
    • 用户名
    • 密码

示例代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class OracleConnectionTest {
    // 数据库连接信息
    private static final String DB_URL = "jdbc:oracle:thin:@//hostname:port/service_name";
    private static final String USER = "username";
    private static final String PASS = "password";
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            // 1. 注册 JDBC 驱动 (对于较新的 JDBC 驱动,这步可以省略)
            Class.forName("oracle.jdbc.driver.OracleDriver");
            // 2. 建立连接
            System.out.println("正在连接到 Oracle 数据库...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            // 3. 创建语句
            stmt = conn.createStatement();
            // 4. 执行查询
            String sql = "SELECT 'Hello Oracle Connection' as message FROM DUAL";
            rs = stmt.executeQuery(sql);
            // 5. 处理结果集
            while (rs.next()) {
                // 通过列名获取数据
                String message = rs.getString("message");
                System.out.println("查询结果: " + message);
            }
            System.out.println("成功连接到 Oracle 数据库!");
        } catch (ClassNotFoundException e) {
            System.err.println("找不到 Oracle JDBC 驱动类");
            e.printStackTrace();
        } catch (SQLException e) {
            System.err.println("数据库连接失败或查询出错");
            e.printStackTrace();
        } finally {
            // 6. 关闭资源
            try {
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

不同版本的 Oracle URL 格式

根据你的 Oracle 版本和连接方式,URL 可能有所不同:

  1. Thin 驱动 (最常用):

    java 测试oracle连接-图2
    (图片来源网络,侵删)
    • jdbc:oracle:thin:@//hostname:port/service_name
    • jdbc:oracle:thin:@hostname:port:SID
  2. OCI 驱动:

    • jdbc:oracle:oci8:@hostname:port/service_name
  3. SID vs Service Name:

    • SID 是旧版本的标识符
    • Service Name 是新版本的标识符(推荐使用)

使用连接池(推荐)

在生产环境中,建议使用连接池而不是直接创建连接,以下是使用 HikariCP 连接池的示例:

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class OracleConnectionPoolTest {
    public static void main(String[] args) {
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:oracle:thin:@//hostname:port/service_name");
        config.setUsername("username");
        config.setPassword("password");
        config.setDriverClassName("oracle.jdbc.driver.OracleDriver");
        // 连接池配置
        config.setMaximumPoolSize(10);
        config.setMinimumIdle(5);
        config.setConnectionTimeout(30000);
        config.setIdleTimeout(600000);
        config.setMaxLifetime(1800000);
        try (HikariDataSource ds = new HikariDataSource(config);
             Connection conn = ds.getConnection();
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT 'Hello from Connection Pool' as message FROM DUAL")) {
            while (rs.next()) {
                System.out.println("查询结果: " + rs.getString("message"));
            }
            System.out.println("成功使用连接池连接到 Oracle 数据库!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

常见问题解决

  1. ClassNotFoundException:

    java 测试oracle连接-图3
    (图片来源网络,侵删)
    • 确保 Oracle JDBC 驱动 JAR 文件在类路径中
    • 检查驱动类名是否正确
  2. SQLException: IO Exception: The Network Adapter could not establish the connection:

    • 检查数据库主机名和端口是否正确
    • 确保数据库服务正在运行
    • 检查防火墙设置
  3. ORA-01017: invalid username/password; logon denied:

    • 检查用户名和密码是否正确
    • 确认用户是否有连接权限
  4. ORA-12514: TNS:listener does not currently know of service requested in connect descriptor:

    • 检查服务名称(SID)是否正确
    • 确认监听器是否正在运行

希望这个示例能帮助你成功测试 Oracle 数据库连接!

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