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: 写入数据库中的表时表或视图不存在错误的主要内容,如果未能解决你的问题,请参考以下文章
java.sql.SQLSyntaxErrorException:ORA-00942:netbeans 8.0.1 中的表或视图不存在错误消息
ORA-00942: 从异构服务的表中选择某些内容时,表或视图不存在