0

我们有一个通过 JDBC 瘦客户端连接到 Oracle 10g 数据库的 Java 程序。

一切正常,但现在 DBA 希望我们使用不同的用户名/密码进行连接,该用户名/密码应该可以使用公共同义词访问相同的表。不幸的是,Java 程序不再看到这些表(当我尝试执行“从表名中选择 *”时,请参阅下面的错误)。

我尝试使用相同的用户名/密码与 Oracle SQL Developer 连接,在这种情况下,我可以毫无问题地运行“select * from tablename”。

我需要在连接字符串中放入特定的参数吗?

非常感谢!

Exception in thread "main" java.sql.SQLException: ORA-00942: table or view does not exist
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:790)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1037)
at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:830)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1687)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1653)

Edited by: user555817 on 08-Oct-2010 04:55
4

1 回答 1

-2

您必须将 Schema Name 与表名一起附加并用大写字母表示(我不记得这是区分大小写还是大写)。

示例:如果 SCH1 中有一个员工表,并且在 SCH2 中创建了同义词作为 SCH2.Employee 的 Emp,则以下语句有效,

    SELECT * FROM SCH2.emp

其中,emp:同义词名称 SCH2:创建此同义词的架构名称,而不是实际表的架构名称。

于 2011-10-29T18:48:58.890 回答