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

Posted

技术标签:

【中文标题】获取 ORA-00942:在 Java 中使用 Blob 的表或视图不存在【英文标题】:Getting ORA-00942: table or view does not exist using Blob in Java 【发布时间】:2016-06-22 12:51:40 【问题描述】:

我在尝试使用 PreparedStatement 插入我的 ORACLE ddbb 时遇到问题。它似乎与我正在处理的 Blob 数据类型有关。 在此链接changing type 中,解决方案是将数据类型从 Blob 更改为 String,但这不是我要找的。我需要在我的表中插入一个 Blob。

这是我的代码:

    public void insert( Connection conn , String id, String imageName, byte[] image ) throws Exception 

    PreparedStatement ps = null;

    Blob img = conn.createBlob();
    img.setBytes(1, image);

    try 

        String sql = "INSERT INTO MY_OWNER.IMAGE_TABLE "
                + "(ID, IMAGE_NAME, BLOB_IMAGE) "
                + "VALUES (?, ?, ?) ";

        ps = conn.prepareStatement(sql);

        ps.setString(1, id);
        ps.setString(2, imageName);
        ps.setBlob(3, img);

        ps.executeUpdate();

        conn.commit();

     catch ( Exception e ) 

        conn.rollback();
        throw new Exception ( e );

     finally 

        if ( ps != null ) 
            ps.close();
        
        if ( conn != null ) 
            conn.close();
        

    


我肯定有特权并且对语法也有把握。就像我说的,我相信 Blob 很麻烦。

这是错误:

java.lang.Exception: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

原因:java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1010)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)

你知道这是怎么回事吗?

谢谢!!!

【问题讨论】:

【参考方案1】:

我很抱歉队友:-P

最后,由于 ORACLE 错误是关于授权的,这是一个授权问题……我没有意识到,因为与 DDBB 的连接正在使用另一个用户进行连接。 解决方案显然是给这个用户适当的授权。

再次抱歉,耽误您的时间!

【讨论】:

以上是关于获取 ORA-00942:在 Java 中使用 Blob 的表或视图不存在的主要内容,如果未能解决你的问题,请参考以下文章

java.sql.SQLException: ORA-00942: 表或视图不存在(Intellij 生成的文件)

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

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

java.sql.SQLException: ORA-00942: 表或视图不存在

Oracle JDBC Clob 插入问题 ORA-00942

异常 ORA-00942: 表或视图不存在 - 使用休眠会话插入现有表时