http://expert.csdn.net/Expert/topic/2201/2201108.xml?temp=.5052301

解决方案 »

  1.   

    首先是Getting BLOB and CLOB Locators from a Result Set 
    // Select LOB locator into standard result set. 
    ResultSet rs =stmt.executeQuery ("SELECT blob_col, clob_col FROM lob_table"); 
    while (rs.next()) 
    {// Get LOB locators into Java wrapper classes. 
    oracle.jdbc2.Blob blob = (oracle.jdbc2.Blob)rs.getObject(1); 
    oracle.jdbc2.Clob clob = (oracle.jdbc2.Clob)rs.getObject(2); 
    [...process...] 

    然后是Read BLOB data from BLOB locator. 
    InputStream byte_stream = my_blob.getBinaryStream(); 
    byte [] byte_array = new byte [10]; 
    int bytes_read = byte_stream.read(byte_array); 
    和Writing BLOB Data  
    java.io.OutputStream outstream; 
    // read data into a byte array  
    byte[] data = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 
    // write the array of binary data to a BLOB 
    outstream = ((BLOB)my_blob).getBinaryOutputStream(); 
    outstream.write(data); 
    还有Passing a BLOB Locator to a Prepared Statement 
    OraclePreparedStatement ops = (OraclePreparedStatement)conn.prepareStatement 
    "INSERT INTO blob_table VALUES(?)");  
    ops.setBLOB(1, my_blob); 
    ops.execute(); 
    最后应该注意: 
    insert的时候一定要用empty_blob()初始化 
    stmt.execute ("insert into my_blob_table values ('row1', empty_blob()");
      

  2.   

    我可以读写, 但是输出的文件,用ultraEdit打开全是‘0’,文件大小能保证。