【问题标题】:Getting ORA-00942: table or view does not exist using Blob in Java获取 ORA-00942:在 Java 中使用 Blob 的表或视图不存在
【发布时间】: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)

你知道这是怎么回事吗?

谢谢!!!

【问题讨论】:

    标签: java oracle prepared-statement blob


    【解决方案1】:

    我很抱歉队友:-P

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-22
      • 2015-08-06
      • 2015-11-09
      • 2011-12-10
      • 2015-01-30
      • 2016-08-23
      • 2020-10-16
      • 2018-02-05
      相关资源
      最近更新 更多