数据库里有个字段是BLOB类型,用来存文件内容的。
现在我要往里面写东西,但是由于用了hibernate ,数据库的所有表项都被对象化了,所以我必须自己生成得到一个Blob对象。请问怎么把String的内容转换成BLob类型的? 目前只知道用字符流,可是不会写。

解决方案 »

  1.   

        InputStream String2InputStream(String str)
        {
            ByteArrayInputStream stream = new ByteArrayInputStream(str.getBytes());
            return stream;
        }字符串转化为InputStream的函数
      

  2.   

    Blob blob=rs.getBlob("CONTENT");
    BufferedReader BlobStream = new BufferedReader(Blob.getCharacterStream());
    StringBuffer stringBuffer = new StringBuffer();int nchars = 0; char[] buffer = new char[10];
    while((nchars = BlobStream.read(buffer)) != -1 )stringBuffer.append(buffer, 0, nchars);BlobStream.close();strDbText = Util.strTrim(stringBuffer.toString());方法二:
    BufferedReader reader = new BufferedReader(Blob.getCharacterStream());String bb=reader.readLine();while(bb!=null){content += bb;bb = reader.readLine();}
      

  3.   

    在你hibernate的实体bean里的那个String字段上加上一个@Blob注解就行了...
      

  4.   

    这段代码是我需要的,多谢。但是后面怎么做呢?
    InputStream怎么转化成blob类型呢?主要是这个不好弄,因为得不到初始化的blob类型。
    我总不能从数据库里读一个blob类型的量再给他复值巴,
    另外就算有一个可用的blob对象,用什么方法把InputStream传给它呢?
      

  5.   

    这段代码是我需要的,多谢。但是后面怎么做呢?
    InputStream怎么转化成blob类型呢?主要是这个不好弄,因为得不到初始化的blob类型。
    我总不能从数据库里读一个blob类型的量再给他复值巴,
    另外就算有一个可用的blob对象,用什么方法把InputStream传给它呢?
      

  6.   

    这段代码是我需要的,多谢。但是后面怎么做呢?
    InputStream怎么转化成blob类型呢?主要是这个不好弄,因为得不到初始化的blob类型。
    我总不能从数据库里读一个blob类型的量再给他复值巴,
    另外就算有一个可用的blob对象,用什么方法把InputStream传给它呢?
      

  7.   

    public static Blob getBlogValue(String strValue,String charsetName){
    Blob blobValue = null;
    try {
    byte[] bytes=strValue.getBytes(charsetName);
    System.out.println("byte[]:"+bytes);
    blobValue=Hibernate.createBlob(bytes);
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }
    return blobValue;
    }
      

  8.   

    String charsetName=“ASCII”;//是字符集的名称