BLOB是不能设置的,一般在用到对表中BLOB字段操作时,是用BYTE[]进行存储的。最初设计BLOB时是考虑为了能够存储大型数据,但是如果设置BLOB的话,可以对BYTE[]进行修改,然后存库,在取出,这样就达到set...的目的了。!

解决方案 »

  1.   

    To: hystream(火鸟)可不可以大概的写一下怎样写这个程序?
      

  2.   

    java.sql.Blob只是个接口而已,而且看来就是方便取数据用的,所以没有提供setBinaryStream的方法。你要存Blob字段,jdbc提供了另外的方法啊,如
    PreparedStatement的setBinaryStream(int parameterIndex, InputStream x, int length)、setBytes(int parameterIndex, byte[] x)和setBlob(int i, Blob x) 。不过setBlob(int i, Blob x) 中实现Blob接口的类标准jdk中并没有,你就只有通过从jdbc Driver厂商开发提供了,例如oracle.sql.BLOB。
    呵呵,因为那些厂商开发的冬冬,我都找不到详细的API文档,所以,都不知道怎么具体去构造,只好用前两种。
      

  3.   

    set use :pstmt = conn.PreparedStatement("insert table(blobfield,....) values(?,...)");pstmt.setObject(1,"blob String");
    pstmt.execute();
    get use:
    resultSet.getString("BlobField");that is all ,enjoy.
      

  4.   

    楼上的真是搞笑,用blob字段来存放字符串,杀鸡用牛刀啊。
      

  5.   

    要写入内容到Blob,请看下面的代码片段:
    ...
    ResultSet lobDetails = stmt.executeQuery(
             "SELECT content FROM webblob WHERE name = '"+name+"' FOR UPDATE");
       if(lobDetails.next()) {
        Blob mapBlob = lobDetails.getBlob(1);
        OutputStream blobOutputStream = ((oracle.sql.BLOB)mapBlob).getBinaryOutputStream();
        File mapFile = new File(filename);
        InputStream sampleFileStream=new FileInputStream(mapFile);
        byte[] buffer = new byte[10* 1024];
        int nread = 0;
        while ((nread= sampleFileStream.read(buffer)) != -1)
         blobOutputStream.write(buffer,0,nread);
        sampleFileStream.close();
        blobOutputStream.close();
        System.out.println("Done insert Blob Data!");
      

  6.   

    忘记说了,JDBC1.0不支持getBlob的方法的,现在要用JDBC1.0!