最后公司的WEB服務器要用 WebLogic 8.1 替換原來的 Resin ,因為要用webloic 的 數據庫連接池,原有的程序需要變動
(1)向? blob 字段寫入值
????????????????????????? String medpk = dao.getElementPK(cn, vo);
??????????????????????????? evo.setEle_elementId(medpk);
??????????????????????????? evo.setEle_contentid(conpk);
??????????????????????????? evo.setEle_type("23");
??????????????????????????? dao.addElementRelation(cn, evo);
??????????????????????????? evo.setMmsnews_elementID(medpk);
?????????????????? //Connection conn=JdbcConnectionPool.getConnection();
??????????????????????????? try {???
??????????????????????????????String sql =
"insert into OM_CM_MMSNEWS (elementid,title,content) values(?,?,empty_blob())";????????????????????????????????????? ???? ????? //1.blob字段插入空值
??????????????????????????????? PreparedStatement ps = cn.prepareStatement(sql);
?????????????????????????????????ps.setString(1, evo.getEle_elementId());
??????????????????????????????? ps.setString(2, evo.getMmsnews_title());
??????????????????????????????? ps.execute();
??????????????????????????????? sql =
??"select content from OM_CM_MMSNEWS where elementid=" + medpk +?" for update";???????????????????????????????????//2.更新指定記錄的 blob字段
??????????????????????????????? Statement st = cn.createStatement();
??????????????????????????????? ResultSet rs = st.executeQuery(sql);
??????????????????????????????? File file = new File(evo.getMmsnews_content());
??????????????????????????????? if (rs.next()) {
???OracleThinBlob blob = (weblogic.jdbc.vendor.oracle.OracleThinBlob) rs.getBlob(1);???????
????????????????????????????????????????????????????????????????//必須用weblogic 的jar包
??????????????????????????????????? OutputStream outStream = blob. getBinaryOutputStream();
??????????????????????????????????? InputStream fin = new FileInputStream(file);
??????????????????????????????????? byte[] b = new byte[blob.getBufferSize()];
??????????????????????????????????? int len = 0;
??????????????????????????????????? while ((len = fin.read(b)) != -1) {
??????????????????????????????????????? outStream.write(b, 0, len);
??????????????????????????????????? }
??????????????????????????????????? fin.close();
??????????????????????????????????? outStream.flush();
??????????????????????????????????? outStream.close();
??????????????????????????????? }
??????????????????????????????? rs.close();
??????????????????????????????? st.close();
??????????????????????????????? logger.error("this MmsNews is save!");
??????????????????????????? } catch (Exception ex) {
??????????????????????????????? logger.error(ex.getMessage());
??????????????????????????????? throw new Exception(ex.getMessage());
??????????????????????????? }
(2)提取blob字段的值,并保存為文件
?private static void getZipFile(String contentid, String filepath,
?????????????????????????????????? String zipfile) throws
??????????? DOException {
??????? String sql = "select? content ?from om_cm_mmsnews a where a.elementid in? (select b.elementid from om_cm_elementrelation b where b.contentid in (select c.contentid from om_cm_content c where c.contentid=?))";
??????? Connection conn = null;
??????? try {
??????????? //建立文件夾
??????????? File tempDicFile = new java.io.File(filepath);
??????????? tempDicFile.mkdirs();
??????????? //提取 blob 字段的內容并保存為 zip 文件
??????????? conn = JdbcConnectionPool.getConnection();
??????????? PreparedStatement ps = conn.prepareStatement(sql);
??????????? ps.setString(1, contentid); //傳入 contentid
??????????? ResultSet rst = ps.executeQuery();
??????????? while (rst.next()) {
??????????????? /* 取出此BLOB對象 */
??????????????? java.sql.Blob blob = rst.getBlob("content");
??????????????? if (blob != null) {
??????????????????? /* 以二進制形式輸出 */
??????????????????? BufferedInputStream in = new BufferedInputStream(blob.
??????????????????????????? getBinaryStream());
??????????????????? BufferedOutputStream out = new BufferedOutputStream(new
??????????????????????????? FileOutputStream(zipfile));
??????????????????? byte[] buf = new byte[1024];
??????????????????? while (true)
??????????????????? {
??????????????????????? int count = in.read(buf);
??????????????????????? if (count <= 0)
??????????????????????? {
??????????????????????????? break;
??????????????????????? }
??????????????????????? out.write(buf, 0, count);
??????????????????? }
??????????????????? in.close();
??????????????????? out.close();
??????????????? }
??????????? }
??????????? rst.close();
??????????? ps.close();
??????????? conn.close();
??????????? logger.error("Mmspreview -->getZipFile 創建zip文件成功");
??????? } catch (Exception ex) {
??????????? logger.error("Mmspreview -->getZipFile 創建zip文件失敗!!!!!" +
???????????????????????? ex.getMessage());
??????? } finally {
??????????? PublicUtilit.rapidReleaseConnection(null, conn, null, null);
??????? }
??? }