我看到的哈
。。
import java.sql.*;
import java.io.*;
import oracle.sql.*;
import oracle.jdbc.driver.*;public class InsertBlob {
public static int insertBlobData(String fileDate, String fileName, String filePath) throws Exception {
int retVal = 0;
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs =  null;
InputStream fin = null;
OutputStream fout = null;
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:thin:@graycell:1521:o8i", "internal", "oracle");
conn.setAutoCommit(false);
stmt = conn.prepareStatement("INSERT INTO tblBlobDemo VALUES (seqBlobDemoID.NextVal, ?, ?, empty_blob())");
stmt.setString(1, fileDate);
stmt.setString(2, fileName);
stmt.execute();
stmt.clearParameters();
stmt = conn.prepareStatement("SELECT FileData FROM tblBlobDemo WHERE FileName = ? FOR UPDATE");
stmt.setString(1, fileName);
rs =  stmt.executeQuery();
if(rs.next()) {
BLOB blob = ((OracleResultSet)rs).getBLOB("FileData");
fout = blob.getBinaryOutputStream();
File f = new File(filePath);
fin = new FileInputStream(f);
byte[] buffer = new byte[blob.getBufferSize()];
int bytesRead = 0;
while((bytesRead = fin.read(buffer)) != -1) {
fout.write(buffer, 0, bytesRead);
}
blob = null;
f = null;
buffer = null;
}
stmt.clearParameters();
}
catch(SQLException ex) {
ex.printStackTrace();
                        retVal = 1;
}
catch(FileNotFoundException ef) {
ef.printStackTrace();
                        retVal = 2;
}
catch(Exception e) {
e.printStackTrace();
                        retVal = 3;
} finally {
try {
fin.close();
fout.close();
conn.commit();
stmt.close();
conn.close();
fin = null;
fout = null;
rs = null;
conn = null;
stmt = null;
}
catch(SQLException e) {
retVal = 1;
}
}
return retVal;
}
}

解决方案 »

  1.   

    ReadBlob 
    ****************
    import java.sql.*;
    import java.io.*;
    import java.lang.String;
    import oracle.sql.*;
    import oracle.jdbc.driver.*;public class ReadBlob {
    public int extractBlob(int fileId, String fileName, String absPath) throws Exception {
    int retVal = 0;
    Connection conn = null;
    PreparedStatement stmt = null;
    InputStream in = null;
    OutputStream out = null;
    BLOB blob = null;
    ResultSet rs = null;
    try {
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    conn = DriverManager.getConnection("jdbc:oracle:thin:@graycell:1521:o8i", "internal", "oracle");
    conn.setAutoCommit(false);
    stmt = conn.prepareStatement("Select FileData FROM tblBlobDemo WHERE FileId = ?");
    stmt.setInt(1, fileId);
    rs = stmt.executeQuery();
    if(rs.next()) {
    blob = ((OracleResultSet)rs).getBLOB("FileData");
    }
    in = blob.getBinaryStream();
    String filePath = absPath + fileName;
    out = new FileOutputStream(filePath);
    int bufferSize = blob.getBufferSize();
    byte[] buffer = new byte[bufferSize];
    int bytesRead = 0;
    while ((bytesRead = in.read(buffer)) != -1) {
    out.write(buffer, 0, bytesRead);
    }
                            stmt.clearParameters();
    buffer = null;
    }
    catch(SQLException ex) {
    ex.printStackTrace();
    retVal = 1;
    }
    catch(Exception e) {
    e.printStackTrace();
    retVal = 2;
    } finally {
    try {
    in.close();
    out.close();
    conn.commit();
    stmt.close();
    conn.close();
    in = null;
    blob = null;
    rs = null;
    out = null;
    conn = null;
    stmt = null;
    }
    catch(SQLException e) {
    retVal = 1;
    }
    }
    return retVal;
    }
    }