【问题标题】:Java Insert Into Table in other SchemaJava 插入到其他 Schema 中的表中
【发布时间】:2018-10-29 04:50:29
【问题描述】:

在 SQL Developer 中使用 INSERT 和 SELECT 到其他模式时,由于 Synonym,我可以毫无问题地进行 INSERT 和 SELECT,但如果我尝试在 java 代码中执行相同操作,它会显示:

ORA-00942: 表或视图不存在

连接是通过

Class.forName("oracle.jdbc.driver.OracleDriver");

从 app.properties 文件加载的属性

InputStream in = this.getClass().getClassLoader().getResourceAsStream("app.properties");

【问题讨论】:

  • 如果您在 Java 和 SQL Developer 中使用相同的 SQL 和相同的用户,那么它应该可以工作。 Java 如何处理同义词或对其他模式的查询没有特殊的方式
  • 不幸的是相同的用户相同的密码和相同的主机 SID 和端口...还有什么?
  • 将 SQL 复制到 Java 代码时打印错误?我将这种方法与另一个模式中的表/包的同义词一起使用,它可以正常工作

标签: java sql properties schema sql-insert


【解决方案1】:

如果您使用架构和表名而不是同义词,它会起作用吗?

例如SELECT * FROM HR.OFFICES(而不是 SELECT * FROM SYNONYM_FOR_OFFICES)

如果这也不起作用,那么问题出在 plucins 建议的数据库名称或凭据上。

【讨论】:

    【解决方案2】:

    它将通过使用 includeSynonyms = true 的属性连接来工作

    java.util.Properties info = new java.util.Properties();
    info.put("user", user);
    info.put("password", pwd);
    info.put ("includeSynonyms", "true");
    

    然后使用属性进行连接

    conn = DriverManager.getConnection(url, info);
    

    这样就可以了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      相关资源
      最近更新 更多