- public class LobUtil {
- private static final int BUFFER_SIZE = 4096;
- private LobUtil() {
- }
- public static synchronized void writeBLOB(ResultSet rs, String fieldName,
- byte[] buf) throws SQLException, IOException {
- if (buf == null) {
- return;
- }
- OutputStream os = null;
- Blob b = rs.getBlob(fieldName);
- if (b == null) {
- throw new SQLException("刚刚插入或更新的BLOB指针为空!");
- } else {
- // if (Conn.isUseConnectionPool()){
- // os =
- // ((weblogic.jdbc.vendor.oracle.OracleThinBlob)b).getBinaryOutputStream();
- // }
- // else{
- // os = ((oracle.sql.BLOB)b).getBinaryOutputStream();
- // }
- /**
- * @todo 需要最终改造为通用数据库处理接口
- */
- // <modify author="jdyao" time="2005-07-26">
- try {
- Method methodToInvoke = b.getClass().getMethod(
- "getBinaryOutputStream", (Class[]) null);
- os = (OutputStream) methodToInvoke.invoke(b, (Object[]) null);
- } catch (Exception e) {
- throw new SQLException(e.getMessage());
- }
- // os = ( (oracle.sql.BLOB) b).getBinaryOutputStream();
- // </modify>
- BufferedOutputStream bos = new BufferedOutputStream(os);
- bos.write(buf);
- bos.flush();
- bos.close();
- }
- }
- public static synchronized void writeBLOB(ResultSet rs, String fieldName,
- InputStream in) throws SQLException, IOException {
- if (in == null) {
- return;
- }
- OutputStream os = null;
- Blob b = rs.getBlob(fieldName);
- if (b == null) {
- throw new SQLException("刚刚插入或更新的BLOB指针为空!");
- } else {
- // if (Conn.isUseConnectionPool()){
- // os =
- // ((weblogic.jdbc.vendor.oracle.OracleThinBlob)b).getBinaryOutputStream();
- // }
- // else{
- // os = ((oracle.sql.BLOB)b).getBinaryOutputStream();
- // }
- // <modify author="jdyao" time="2005-07-26">
- try {
- Method methodToInvoke = b.getClass().getMethod(
- "getBinaryOutputStream", (Class[]) null);
- os = (OutputStream) methodToInvoke.invoke(b, (Object[]) null);
- } catch (Exception e) {
- throw new SQLException(e.getMessage());
- }
- // os = ( (oracle.sql.BLOB) b).getBinaryOutputStream();
- // </modify>
- BufferedOutputStream bos = new BufferedOutputStream(os);
- BufferedInputStream bis = new BufferedInputStream(in);
- byte buf[] = new byte[BUFFER_SIZE];
- int len = -1;
- while ((len = bis.read(buf)) != -1) {
- bos.write(buf, 0, len);
- }
- bis.close();
- bos.flush();
- bos.close();
- }
- }
- public static synchronized void writeCLOB(ResultSet rs, String fieldName,
- String buf) throws SQLException, IOException {
- if (buf == null) {
- return;
- }
- Writer wr = null;
- Clob c = rs.getClob(fieldName);
- if (c == null) {
- throw new SQLException("刚刚插入或更新的CLOB指针为空!");
- } else {
- // <modify author="jdyao" time="2005-07-26">
- try {
- Method methodToInvoke = c.getClass().getMethod(
- "getCharacterOutputStream", (Class[]) null);
- wr = (Writer) methodToInvoke.invoke(c, (Object[]) null);
- } catch (Exception e) {
- throw new SQLException(e.getMessage());
- }
- // wr = ((oracle.sql.CLOB) c).getCharacterOutputStream();
- // </modify>
- BufferedWriter bw = new BufferedWriter(wr);
- bw.write(buf);
- bw.flush();
- bw.close();
- }
- }
- public static synchronized void writeCLOB(ResultSet rs, String fieldName,
- InputStream in) throws SQLException, IOException {
- if (in == null) {
- return;
- }
- Writer wr = null;
- Clob c = rs.getClob(fieldName);
- if (c == null) {
- throw new SQLException("刚刚插入或更新的CLOB指针为空!");
- } else {
- //<modify author="jdyao" time="2005-07-26">
- try {
- Method methodToInvoke = c.getClass().getMethod(
- "getCharacterOutputStream", (Class[]) null);
- wr = (Writer) methodToInvoke.invoke(c, (Object[]) null);
- } catch (Exception e) {
- throw new SQLException(e.getMessage());
- }
- //wr = ((oracle.sql.CLOB) c).getCharacterOutputStream();
- //</modify>
- BufferedWriter bw = new BufferedWriter(wr);
- BufferedReader br = new BufferedReader(new InputStreamReader(in));
- char buf[] = new char[BUFFER_SIZE];
- int len = -1;
- while ( (len = br.read(buf)) != -1) {
- bw.write(buf, 0, len);
- }
- br.close();
- bw.flush();
- bw.close();
- }
- }
- }
处理blob和clob的通用类
最新推荐文章于 2023-12-28 09:51:42 发布