无论我使getBytes()参数怎样变化都一样结果,但当我调试到System.arraycopy()时,强行将length的值-1便无问题,这是不是说明源代码错了吗?

解决方案 »

  1.   

    String Id;
    Id=request.getParameter("Id");
    oracle.sql.BLOB m_Blob;
    odbcQuery="select Body from Project_Design where ID="+Id;
    odbcRs=odbcStmt.executeQuery(odbcQuery);
    if(odbcRs.next())
    {
    System.out.println(odbcQuery);
    OutputStream pOut=response.getOutputStream();
    response.setContentType("application/msword"); m_Blob=(oracle.sql.BLOB)odbcRs.getBlob("Body");
    byte[] Buffer=m_Blob.getBytes(1,(int)m_Blob.length());

    pOut.write(Buffer);
    pOut.close();
    pOut.flush();
    response.flushBuffer();
    }
    else
    {
    System.out.println(odbcQuery);
    }
    odbcRs.close();
      

  2.   

    就如楼上gjd111686(数字金刚)的程序中
    byte[] Buffer=m_Blob.getBytes(1,(int)m_Blob.length());//从这里抛出异常,我也用过(int)blob.length(),只不过我出题时没有写上而已
      

  3.   

    下标越界~~当你要取出数组中的元素时 先判断这个元素是否为 null 否则就会异常~~还有楼主的代码写的太乱了 没有格式也拿出来~晕死~
      

  4.   

    请谅.原代码就如gjd111686(数字金刚),只不过我使用的是mysql,而且源元素值非null
      

  5.   

    请问:大家用java.sql.Blob.getBytes(1,blob.length())时都没有我这样的问题吗?