仅供参考:
ByteArrayInputStream bai = new ByteArrayInputStream(astr.getByes());如果目标字段是普通文本类型
astatement.setAsciiStream(bai )如果目标字段是十六位格式(UNICODE)
astatement.setUnicodeStream(bai )如果目标字段是二进制类型
astatement.setBinaryStream(bai )我没试过,应该可以的

解决方案 »

  1.   

    谢谢,搞定了
    但是我想知道原因?这几种方式有什么不同?是不是setAsciiStream存入数据库是按字符来读写
    setUnicodeStream按照32位来读写,而setBinaryStream按照字节来读写,但是应该是相同的结果啊?
      

  2.   

    首先声明:我就是newborz,昨天刚改名,今天有点后悔了:)setAsciiStream按8位字符来写
    setUnicodeStream按16字符来写setBinaryStream也是按8位来写
    关键是要搞清楚二进制数据与文本字符的区别
    打个比方
    byte b = 80;
    如果你以文方式写入b ,则文件会存储字符'8'和'0'的ASCII/Unicode码,这取决于你采用哪个函数,如果是ASCII则实际上存储的数据为56('8'的ASCII码),和48('0'的ASCII码)如同你采用二进制方式写入,则会写入80,你最后看到的就是ASCII/Unicode码为80的字符我以前这样做过,不知道记得正不正确,请指正