我通过数据源连接到Oracle数据库,因为我们都知道我们有两种类型的连接,一种使用SID,另一种使用服务名称. 用于服务名称连接

        OracleDataSource dataSource = new OracleDataSource();
        dataSource.setDriverType("thin");
        dataSource.setServerName(hostname);
        dataSource.setPortNumber(Integer.parseInt(port));
        dataSource.setServiceName(serviceName);
        dataSource.setUser(username);
        dataSource.setPassword(password);

这可以很好地工作,但在这种情况下,如果我想使用sid建立连接,没有名为setSid()的方法或类似的方法,是否有任何方法或我应该使用

      String url = "jdbc:oracle:thin:@" + hostname + ":" + port + ":" + sid;
      dataSource.setUrl(url);
      dataSource.setUser(username);
      dataSource.setPassword(password);

我的方法是正确的,还是我错过了什么 供参考的JDBC文档https://docs.oracle.com/en/database/oracle/oracle-database/19/jajdb/oracle/jdbc/pool/OracleDataSource.html

推荐答案

从文档中看起来,您应该使用.setDatabaseName(sid),但我没有Oracle数据库来进行测试.

      String url = "jdbc:oracle:thin:@" + hostname + ":" + port + ":" + sid;
      dataSource.setUrl(url);
      dataSource.setUser(username);
      dataSource.setPassword(password);
      dataSource.setDatabaseName(sid);

参考: https://docs.oracle.com/en/database/oracle/oracle-database/19/jajdb/oracle/jdbc/pool/OracleDataSource.html#setDatabaseName_java_lang_String_

设置服务器上特定数据库的名称.在Oracle的行话中,这称为SID(系统标识符).

Java相关问答推荐

Java JAR环境(JRE)是否支持模块?

如何在带有Micronaut的YAML中使用包含特殊字符的字符串作为键

SpringBootreact 式Web应用程序的Spring Cloud Configer服务器中的资源控制器损坏

如何在运行时动态创建表(使用Java、JPA、SprringBoot)

Chunk(Int)已弃用并标记为要删除

在Spring Boot应用程序中导致";MediaTypeNotSupportdException&qot;的映像上载

如何从Keyloak映射Hibernate实体中的用户

搜索列表返回多个频道

为什么当我创建Robot对象时,JavaFX引发IlLegalStateException异常?

如何在 spring 数据的MongoDB派生查询方法中使用$EXISTS

允许同时执行两个方法,但不能同时执行这两个方法

如何读取3个CSV文件并在控制台中按顺序显示?(Java)

具有最大共同前景像素的图像平移优化算法

将java.util.Date(01.01.0001)转换为java.time.LocalDate将返回29.12.0000

在Java中将.GRF转换为图像文件

控制器建议异常处理

验证没有';t work on Hibernate Entity';s字段

可以';不要在Intellij IDEA中使用最新的Java版本(JDK 21)

如何使用java区分以下结果

Java 8 中 ByteBuffer 和 BitSet 的奇怪行为