public void insertImage(Image image)
{
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
OutputStream out = null;
try
{
conn = DBManager.getConnection();
stat = conn.createStatement();
byte[] data = convertImage(image);
String sql1 = "INSERT INTO PHOTO(ID,NAME,IMAGE) VALUES(1,'TEST',EMPTY_BLOB())";
stat.execute(sql1);
String sql2 = "SELECT IMAGE FROM PHOTO WHERE ID=1 FOR UPDATE";
rs = stat.executeQuery(sql2);
if(rs.next())
{
BLOB blob = (BLOB)rs.getBlob("IMAGE");
out = blob.getBinaryOutputStream();
try
{
out.write(data,0,data.length);
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
if(out != null)
out.close();
if(rs != null)
rs.close();
if(stat != null)
stat.close();
if(conn != null)
conn.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
程序运行到
rs = stat.executeQuery(sql2);
就会抛出
java.sql.SQLException: ORA-01002: 读取违反顺序
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:1891)
at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:1198)
at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2400)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2672)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:572)
at com.computech.takepic.common.ImageDAO.insertImage(ImageDAO.java:39)
at com.computech.takepic.common.TestJMF$1.actionPerformed(TestJMF.java:104)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
请大家帮我看下,谢谢。
相关推荐
### ORA-01157 错误详解与解决方案 #### 错误代码与含义 ORA-01157 错误是 Oracle 数据库中一个常见的错误代码,其全称是:“ORA-01157: 无法识别/文件 - DBWR 文件”。这个错误通常发生在数据库启动过程中,当...
- 查看`DB_CACHE_SIZE`参数设置,监控数据块的物理读取率,确保数据缓冲区的使用效率,调整`DB_BLOCK_GETS`和`PHYSICAL_READS`比例,保持高命中率。 - **日志缓冲区(Redo Log Buffer)** - 监测`redoentries`和...
在IT领域,尤其是在数据库管理与维护中,遇到ORA-01460错误是常见的问题之一,这通常意味着系统在尝试执行数据转换时遇到了未实现或不合理的请求。本文将深入探讨ORA-01460错误的成因、影响以及提供一系列有效的解决...
在JDBC中,CLOB对象被表示为`java.sql.Clob`接口的实例,提供了读取和修改CLOB字段的方法。 要读取CLOB字段并转换为String,你需要遵循以下步骤: 1. **建立连接**:使用`DriverManager.getConnection()`方法建立...
然而,描述中指出在使用过程中遇到了一些问题,这可能包括错误代码“ORA-24345:出现截断或空读取错误”,这是Oracle数据库系统中一个常见的错误,通常与数据读取或写入过程中的数据长度不匹配有关。 错误的产生...
这样,Silverlight应用可以通过调用WCF服务的方法来执行CRUD(创建、读取、更新、删除)操作,而无需直接访问数据库,增加了安全性。 1. **创建WCF服务** - 首先,在Visual Studio中创建一个新的WCF服务项目。这将...
java.sql.SQLException: Listener refused the connection with the following error: ORA-12518, TNS: listener could not handoff client connection ``` 这个异常意味着Oracle监听器无法将客户端连接分发到后端...
### Java连接Oracle数据库并返回数据打印的知识点 #### 一、Java连接Oracle数据库的基本步骤 在Java中连接Oracle数据库通常需要以下步骤: 1. **加载Oracle JDBC驱动:** - 使用`Class.forName()`方法来注册...
2008/06/25 13:30:57 - ERROR: java.sql.SQLException: ORA-01722: 无效数字 ``` **原因分析**: 根据错误信息, 可以看出字段 "field2" 的值为 "1,798", 而 Oracle 无法将含有逗号的字符串转换为 Number 类型。 **...
Oracle驱动程序通常遵循Java Database Connectivity (JDBC) 标准,这是一个Java API,允许Java程序员使用SQL语句来访问和操作数据库。JDBC驱动分为四种类型:Type 1、Type 2、Type 3 和 Type 4。Oracle提供的驱动...
1. **获取JDBC驱动包**:通常情况下,Oracle的JDBC驱动位于安装目录下的`jdbc/lib`文件夹中,例如`C:\oracle\ora92\jdbc\lib\classes12.jar`。 2. **配置Classpath**:将该JAR文件添加到项目的类路径中: - 在...