获取 ORA-00942:table 或在 Java 中使用 Blob 不存在视图
Getting ORA-00942: table or view does not exist using Blob in Java
我在尝试使用 PreparedStatement 插入我的 ORACLE ddbb 时遇到问题。它似乎与我正在处理的 Blob 数据类型有关。
在此 link changing type 中,解决方案是将数据类型从 Blob 更改为 String,但这不是我要找的。我需要在 table.
中插入一个 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:table 或视图不存在
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)
你知道这是怎么回事吗?
谢谢!!!
我很抱歉伙计们:-P
最后,由于 ORACLE 错误是关于授权的,这是一个授权问题...我没有意识到,因为与 DDBB 的连接正在使用另一个用户进行连接。
解决方案显然是为该用户提供适当的授权。
再次抱歉耽误您的时间!
我在尝试使用 PreparedStatement 插入我的 ORACLE ddbb 时遇到问题。它似乎与我正在处理的 Blob 数据类型有关。 在此 link changing type 中,解决方案是将数据类型从 Blob 更改为 String,但这不是我要找的。我需要在 table.
中插入一个 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:table 或视图不存在
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)
你知道这是怎么回事吗?
谢谢!!!
我很抱歉伙计们:-P
最后,由于 ORACLE 错误是关于授权的,这是一个授权问题...我没有意识到,因为与 DDBB 的连接正在使用另一个用户进行连接。 解决方案显然是为该用户提供适当的授权。
再次抱歉耽误您的时间!