【问题标题】:Connection with oracle in java application在 Java 应用程序中与 oracle 连接
【发布时间】:2012-11-01 11:07:21
【问题描述】:

我已经下载并安装了 oracle express 11g 版本。现在我想从 java 应用程序连接它。这是我的连接代码:-

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:example", "example","password123");

但是当我尝试连接它时,它显示我出现以下异常。

java.sql.SQLException: Listener refused the connection with the following error:  
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at javaapplication3.JavaApplication3.main(JavaApplication3.java:40)

但是当我尝试连接“xe”数据库时,它已连接。

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();   
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "example","password123");

我不知道为什么会这样?请给我一些参考或提示。

【问题讨论】:

  • 监听器拒绝连接并出现以下错误:错误在哪里?
  • 是的 Abu .. 当我试图访问“示例”模式时它给出了...第一个代码
  • @user591790 我的意思是你没有把错误放在问题中。请用错误编辑你的问题,以便这里的人可以更好地帮助你。
  • 你创建了example 数据库吗?

标签: java oracle connection


【解决方案1】:

我认为,您在database schema 和数据库类型之间存在误解。在Oracle中,XE表示oracle数据库的Express EditionORCL 表示Oracle Corp

在mysql中

DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "example","password123");

`test` is a database schema.

在 Oracle XE 中

DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "example","password123");
DriverManager.getConnection("jdbc:oracle:thin:scott/tiger@myhost:1521:orcl","example", "password123");

`example`: database schema name and DB user name are the same.

【讨论】:

    【解决方案2】:

    Oracle 的连接 URL 格式为:

    jdbc:oracle:thin:@HOST:PORT:SID

    SID 是站点标识符。在完整的 oracle 安装中,您可以有多个 SID,但对于 Oracle Express,这将始终是 XE

    您所说的“数据库”等同于 Oracle 中的“用户”(上面代码中的“示例”)。表等...是在该用户下创建的。

    【讨论】:

      【解决方案3】:

      在 URL 模式中,XE 和 orcl 是 Oracle 的服务 ID。 对于 Oracle 表达版,使用“xe”,对于 Oracle 企业版 使用“orcl”..

      【讨论】:

        【解决方案4】:

        通过执行以下命令检查侦听器已知哪些实例:lsnrctl services

        检查您的 tnsnames.ora

        检查您的 SID 参数是否存在拼写错误和无效参数值

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-25
          • 2015-12-09
          • 2017-11-08
          相关资源
          最近更新 更多