ORA-00942: 写入数据库中的表时表或视图不存在错误

Posted

技术标签:

【中文标题】ORA-00942: 写入数据库中的表时表或视图不存在错误【英文标题】:ORA-00942: table or view does not exist error on writing to a table in database 【发布时间】:2015-08-20 14:20:42 【问题描述】:

我正在尝试使用 java + jdbc 从一个数据库表中读取数据,并尝试在同一会话中插入到不同服务器上的另一个数据库表中。

我创建了 2 个连接对象 (con,conn1),每个都指向正确的数据库。 使用第一个 con 对象,我能够读取数据,但是当它要使用 conn1 将数据写入另一个表时,它会因错误而失败 ORA-00942- 表或视图不存在。

我还交叉检查了该表是否存在,我们可以写入该表。 使用独立的类和静态数据,我能够写入该表。

请让我知道我的方法有什么问题。

代码示例:

公共静态无效主

Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con = DriverManager.getConnection( "URL","uname","passwd");

//从 db 读取并添加到 arraylist 的代码。 关闭结果集,con。

这个连接obj指向一个新的数据库和url

连接 con1 = DriverManager.getConnection("url","uname","passwd"); PreparedStatement pstmt = con1.prepareStatement("insert into SCHEMA_NAME.TABLE_NAME(columns) values(?,?,?,?,?,?,?,?)");

//迭代上面填充的arraylist的代码

pstmt.setint etc 
pstmt.executeUpdate();

executeUpdate 语句后失败。

【问题讨论】:

发布一些代码来演示您的问题。否则我们只能猜测。 添加了代码片段。请检查 你的方法是对的:) 附加信息,我也在上述查询中读取和写入 clob 字段。这会产生问题吗? Clob 字段很大。 【参考方案1】:

是的,问题出在 pstmt.setClob 字段上。我将其更改为 pstmt.setString 并取了 clob 对象的 .toString() 并且它起作用了。

我仍然不明白为什么它会抛出 table or view doesn't exist 错误。

【讨论】:

好的,所以确切的原因是当我们使用 ojdbc14.jar 驱动程序执行 pstmt.setClob 时,它给出的表或视图不起作用。所以我将驱动程序更新为 ojdbc6.jar 并使用 pstmt.setClob(clob.getCharacterStream) 和中提琴表被迁移。只是发布此答案以供将来参考

以上是关于ORA-00942: 写入数据库中的表时表或视图不存在错误的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00942: 使用 iBatis 的表或视图不存在

java.sql.SQLSyntaxErrorException:ORA-00942:netbeans 8.0.1 中的表或视图不存在错误消息

ORA-00942: 从异构服务的表中选择某些内容时,表或视图不存在

获取 ORA-00942:在 Java 中使用 Blob 的表或视图不存在

ORA-00942: 表或视图不存在 - Oracle

ORA-00942: 表或视图不存在解决方法