应该不是转换的问题,你应该仔细看异常sqlException 抛出是应该数据库的 access error or other error

解决方案 »

  1.   

    我觉得肯定是我的说的问题
    因为我的yourStrnig如果很小的话比如是"jjjjj"的话就能成功插入的
      

  2.   

    我在往一个db2的BLOB型的字段存放大数据的时候,代码如下:
    myString是我从页面接收的大数据(40k以上)InputStream inputStream = new ByteArrayInputStream(myString.getBytes());
    pstmt.setBinaryStream(8,inputStream,myString.length());以上的语句出错了。但是当我把myString设置成很小的时候以上的语句就是对的,也就是我就可以把myString插入到库中了!!!请大虾指点!!!!!!!
      

  3.   

    你使用getBytes时,设置chatset看看
      

  4.   

    如果你用是DB2 是不是你声明的容量小了吧。
    (另:大字符串一般使用CLOB)
      

  5.   

    File file = new File("aaa.gif"); 
    int fileLength =(int) file.length(); 
    InputStream fin = new FileInputStream(file); 
    PreparedStatement pstmt = con.prepareStatement("insert into tb_file values('aaa.gif',?)"); 
    pstmt.setBinaryStream (1, fin, fileLength); 
    pstmt.executeUpdate(); 以上是对大数据的操作的一个例子你可以仔细看Exception,DB2的BLOB操作我没有用过,但异常告诉我们是数据库操作的错误,你可以看看db2的 blob的值的范围
      

  6.   

    你是否可以把你的异常贴清楚一下以下是另外以为朋友的异常java.sql.SQLException: The stream contains more or less data than was specified
    at COM.ibm.db2.jdbc.app.DB2PreparedStatement.loadParameters2(Unknown Source)
    at COM.ibm.db2.jdbc.app.DB2PreparedStatement.loadParameters(Unknown Source)
    at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute2(Unknown Source)
    at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute(Unknown Source)
    at WriteBlob.writePicture(WriteBlob.java:144)
    at WriteBlob.main(WriteBlob.java:171)出错在 DB2PreparedStatement.loadParameters2(Unknown Source)db2的clob,blob等大数据可以存储2gb的数据
      

  7.   

    谢谢各位!我的字段是blob型的,长度设置的是50mb,而我的string型的数据大概是4k。
    我的异常如下:::
    [2004-08-05 22:09:14,703] Servlet.Engine.Transports : 0 com.sscm.pact.PactManager ERROR - ...update catch SQLException:
    java.sql.SQLException: The stream contains more or less data than was specified
    at COM.ibm.db2.jdbc.app.DB2PreparedStatement.loadParameters2(Unknown Source)
    at COM.ibm.db2.jdbc.app.DB2PreparedStatement.loadParameters(Unknown Source)
    at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute2(Unknown Source)
    at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeUpdate(Unknown Source)
    at com.sscm.pact.PactManager.update(PactManager.java:164)
    at org.apache.jsp._editStockPact._jspService(_editStockPact.java:265)
    at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:89)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)上面我是用log4j打印的出错信息!!
      

  8.   

    楼主说得对“The stream contains more or less data than was specified”
    表示你插入或修改的信息内容已经超过了你数据库中的定义。
    1、在你插入前,显示出你要插入的字串及其长度。看看究竟是啥(要老老实实地在插入语句前加印出语句,不要想当然认为,一般是由于逻辑上没有考虑到某些情况而使字串超长了)
    2、是否涉及码制上的问题,一般编码方式不同,其字符长度会有变化。如一个中文需要两个字节,无形中将码制的长度翻了倍。
      

  9.   

    我的数据我打印出来存的时候是10k不到,但是字段的长度设置我是50m,所以应该不是这个问题,我觉得会不会是new ByteArrayInputStream(myString.getBytes());这里出问题了?
    请大家会诊,会诊!!
    这是我的原句::
    InputStream inputStream = new ByteArrayInputStream(myString.getBytes());
    pstmt.setBinaryStream(8,inputStream,myString.length());
      

  10.   

    inputStream的长度和myString.length()不匹配吧
      

  11.   

    Acylas(Acylas) 说的对
    我的myString.length()这个长度应该修改为什么呢?????我做过测试,如果我插入的是"oooo"(都是英文),myString.length()=4,插入成功,但是我插入"娘的",myString.length()=2,插入操作失败。估计是因为汉字一个字站用两个字节的问题,但是,后来我把以上的语句修改为:
    InputStream inputStream = new ByteArrayInputStream(myString.getBytes());
    pstmt.setBinaryStream(8,inputStream,(myString.getBytes()).length);(myString.getBytes()).length打印出4,即:(pact.getAffix().getBytes()).length=4但是这样修改以后还是插入失败!!!55555555555555555555555
      

  12.   

    weimenren(愚人码头) ( )
    请问你那位朋友的异常后来是怎么解决的呢?
      

  13.   

    那db2对blob型数据有啥要求的啊?