尝试将一批行插入现有表时,我遇到了异常
ORA-00942: 表或视图不存在
我可以确认该表存在于 db 中,并且可以使用 oracle sql developer 将数据插入到该表中。但是当我尝试在java中使用preparedstatement插入行时,它的抛出表不存在错误。
请在下面找到错误的堆栈跟踪
java.sql.SQLException: ORA-00942: table or view does not exist
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1889)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout>>(OracleStatement.java:2709)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at quotecopy.DbConnection.insertIntoDestinationDb(DbConnection.java:591)
at quotecopy.QuoteCopier.main(QuoteCopier.java:72)
任何人都可以提出这个错误的原因吗?
更新:问题已解决
我的数据库连接属性或我的表或视图名称没有问题。问题的解决方法很奇怪。我尝试插入的列之一是 Clob 类型。由于我之前在 oracle db 中处理 clob 数据时遇到了很多麻烦,因此尝试用临时字符串设置器替换 clob 设置器,并且执行相同的代码没有任何问题,并且所有行都正确插入!!!。
IE。peparedstatement.setClob(columnIndex, clob)
被替换为
peparedstatement.setString(columnIndex, "String")
为什么错误表或视图确实存在错误是由于插入 clob 数据时出错而引发的。你们中的任何人都可以解释一下吗?
非常感谢您的回答和评论。