Java,J2EE,Weblogic,Oracle

          java項目隨筆
          隨筆 - 90, 文章 - 6, 評論 - 61, 引用 - 0
          數據加載中……

          Weblogic 下 oracle 的 blob 操作

          最后公司的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);
          ??????? }
          ??? }

          posted on 2006-11-16 12:39 龔椿深 閱讀(690) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 自治县| 全椒县| 凉山| 邓州市| 荆门市| 双城市| 荔浦县| 连南| 尉氏县| 峨眉山市| 梧州市| 囊谦县| 称多县| 台东县| 浮梁县| 武宁县| 济阳县| 松溪县| 绥中县| 大余县| 萝北县| 康乐县| 元阳县| 五莲县| 乡宁县| 平利县| 望谟县| 五大连池市| 江都市| 永寿县| 兴国县| 千阳县| 怀远县| 波密县| 常州市| 扶沟县| 瓮安县| 兰州市| 葵青区| 高清| 天津市|