teleport01 2008-11-20 15:08
浏览 872
已采纳

java.sql.SQLException: ORA-01002: 读取违反顺序 大家帮我看看

[code="java"]
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();
    }
}

}
[/code]
程序运行到
[code="java"]rs = stat.executeQuery(sql2);[/code]
就会抛出
[code="java"]
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)

[/code]

请大家帮我看下,谢谢。

  • 写回答

1条回答 默认 最新

  • linpyi 2008-11-20 15:41
    关注

    也许访问数据库的模式是隐式提交的方式,即每一个SQL语句执行时,就自动的Commit,这样就发生这样的错误.改一下就可以了.
    [code="java"]
    conn.setAutoCommit(false);
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用