<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    甜咖啡

    我的IT空間

    向oracle數據庫存儲文件,并讀出文件

    /**
      * 從數據庫中查詢IRI和KLO模型的數據,并下載到本地
      * @param dataTime         時次
      * @param outIRIFilePath   IRI文件下載到本地的路徑
      * @param outKLOFilePath   KLO文件下載到本地的路徑
      * @param outAnaFilePath   插值文件下載到本地的路徑
      */
      @SuppressWarnings("static-access")
      public static void selectBlogInfo(String dataTime, String outIRIFilePath, String outKLOFilePath, String outAnaFilePath) {
      try {
      Connection con = DBConnectionManager.getInstance().getConnection();
      Statement st = con.createStatement();
      String sql = "select * from MODELTEC where DATATIME=to_date('"+dataTime+"', 'YYYY-mm-dd HH24')";
      ResultSet rs = st.executeQuery(sql);
      if (rs.next()) {
      Blob blod = rs.getBlob("IRIDATA");
      InputStream reader = blod.getBinaryStream();
      dataTime = dataTime.replaceAll("-", "");
      dataTime = dataTime.replaceAll(" ", "");
      String iriFilePath = outIRIFilePath+"\\"+dataTime+"0000.iri.grd";
      File file = new File(iriFilePath);
      OutputStream writer;
      writer = new BufferedOutputStream(new FileOutputStream(file));
      byte buf[] = new byte[1024];
      for (int i = 0; (i = reader.read(buf)) > 0;) {
      writer.write(buf, 0, i);
      }
      writer.close();
      reader.close();
     
      blod = rs.getBlob("IRIDATA");
      reader = blod.getBinaryStream();
      String kloFilePath = outKLOFilePath+"\\"+dataTime+"0000.klo.grd";
      file = new File(kloFilePath);
      writer = new BufferedOutputStream(new FileOutputStream(file));
      buf = new byte[1024];
      for (int i = 0; (i = reader.read(buf)) > 0;) {
      writer.write(buf, 0, i);
      }
      writer.close();
      reader.close();
     
      blod = rs.getBlob("ANADATA");
      reader = blod.getBinaryStream();
      String anaFilePath = outAnaFilePath+"\\"+dataTime+"0000.grd";
      file = new File(anaFilePath);
      writer = new BufferedOutputStream(new FileOutputStream(file));
      buf = new byte[1024];
      for (int i = 0; (i = reader.read(buf)) > 0;) {
      writer.write(buf, 0, i);
      }
      writer.close();
      reader.close();
      }
      DBConnectionManager.closeConnection();
      if(con!=null){con.close();}
      if(st!=null){st.close();}
      if(rs!=null){rs.close();}
      } catch (SQLException e) {
      e.printStackTrace();
      } catch (FileNotFoundException e) {
      e.printStackTrace();
      } catch (IOException e) {
      e.printStackTrace();
      }
      }
     
      /**
      * 把IRI和KLO模型的文件上傳到數據庫中
      * @param dataTime     時次
      * @param iriFilePath  要上傳IRI文件的絕對路徑
      * @param kloFilePath  要上傳KLO文件的據對路徑
      * @param ANAFilePath  要上傳插值文件的據對路徑
      */
      @SuppressWarnings("static-access")
      public static void insertBlogInfo(String dataTime, String IRIFilePath, String KLOFilePath, String ANAFilePath) {
      try {
      Connection con = DBConnectionManager.getInstance().getConnection();
      // 處理事務
      boolean defaultCommit;
      defaultCommit = con.getAutoCommit();
     
      con.setAutoCommit(false);
      Statement st = con.createStatement();
     
      String sql = "select * from MODELTEC where DATATIME=to_date('"+dataTime+"', 'YYYY-mm-dd HH24')";
      ResultSet rs = st.executeQuery(sql);
      if(rs.next()){
      System.out.println(dataTime+"時次已經入庫!");
      return ;
      }
      // 插入一個空對象
      sql = "insert into MODELTEC(ID, DATATIME, IRIDATA, KLODATA, ANADATA) values(" +
      "SEQU_MODEL_ID.nextval, " +
      "to_date('"+dataTime+"','YYYY-mm-dd HH24'), " +
      "empty_blob(), " +
      "empty_blob(), " +
      "empty_blob())";
      st.executeUpdate(sql);
      // 用for update方式鎖定數據行
      sql = "select IRIDATA,KLODATA,ANADATA from  MODELTEC where DATATIME=to_date('"+dataTime+"', 'YYYY-mm-dd HH24') for update";
      rs = st.executeQuery(sql);
      if (rs.next()) {
      // 得到java.sql.Blob對象,然后Cast為oracle.sql.BLOB
      BLOB blob = (BLOB) rs.getBlob("IRIDATA");
      // 到數據庫的輸出流
      OutputStream outStream = blob.getBinaryOutputStream();
      // 這里用一個文件模擬輸入流
      InputStream fin = new FileInputStream(new File(IRIFilePath));
      // 將輸入流寫到輸出流
      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();
     
      // 得到java.sql.Blob對象,然后Cast為oracle.sql.BLOB
      blob = (BLOB) rs.getBlob("KLODATA");
      // 到數據庫的輸出流
      outStream = blob.getBinaryOutputStream();
      // 這里用一個文件模擬輸入流
      fin = new FileInputStream(new File(IRIFilePath));
      // 將輸入流寫到輸出流
      b = new byte[blob.getBufferSize()];
      len = 0;
      while ((len = fin.read(b)) != -1) {
      outStream.write(b, 0, len);
      }
      // 依次關閉(注意順序)
      fin.close();
      outStream.flush();
      outStream.close();
     
      // 得到java.sql.Blob對象,然后Cast為oracle.sql.BLOB
      blob = (BLOB) rs.getBlob("ANADATA");
      // 到數據庫的輸出流
      outStream = blob.getBinaryOutputStream();
      // 這里用一個文件模擬輸入流
      fin = new FileInputStream(new File(ANAFilePath));
      // 將輸入流寫到輸出流
      b = new byte[blob.getBufferSize()];
      len = 0;
      while ((len = fin.read(b)) != -1) {
      outStream.write(b, 0, len);
      }
      // 依次關閉(注意順序)
      fin.close();
      outStream.flush();
      outStream.close();
     
      con.commit();
      /* 恢復原提交狀態 */
      con.setAutoCommit(defaultCommit);
      DBConnectionManager.closeConnection();
      if(con!=null){con.close();}
      if(st!=null){st.close();}
      if(rs!=null){rs.close();}
      }
      } catch (SQLException e) {
      e.printStackTrace();
      } catch (FileNotFoundException e) {
      e.printStackTrace();
      } catch (IOException e) {
      e.printStackTrace();
      } catch (Exception e) {
      e.printStackTrace();
      }
      }

    posted on 2012-10-19 13:17 甜咖啡 閱讀(1334) 評論(0)  編輯  收藏


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


    網站導航:
     

    導航

    <2012年10月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    統計

    常用鏈接

    留言簿(1)

    我參與的團隊

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲高清有码中文字| 亚洲成人午夜电影| 少妇亚洲免费精品| www国产亚洲精品久久久日本| 亚洲AV色无码乱码在线观看| 国内精品免费视频自在线| 亚洲AV男人的天堂在线观看| 在线免费观看一级毛片| 亚洲日韩av无码中文| 国产精品嫩草影院免费| 免费人人潮人人爽一区二区| 亚洲 国产 图片| 最新久久免费视频| 亚洲美女视频一区| 在线观看免费人成视频| 亚洲乱码中文字幕在线| 全黄性性激高免费视频| 久久久受www免费人成| 亚洲国产老鸭窝一区二区三区| 毛片免费全部播放无码| 亚洲熟妇AV乱码在线观看| 亚洲高清国产拍精品青青草原| 久久毛片免费看一区二区三区| 亚洲黑人嫩小videos| 免费高清av一区二区三区| 一级毛片免费不卡直观看| 亚洲AV无码成人精品区天堂 | 国产又黄又爽胸又大免费视频| 国产l精品国产亚洲区在线观看| 最近中文字幕高清免费中文字幕mv| 亚洲国产精品白丝在线观看| 免费真实播放国产乱子伦| 久久免费观看国产精品| 亚洲中文字幕无码爆乳app| 亚洲精品一级无码中文字幕| 3344永久在线观看视频免费首页| 亚洲欧美成人av在线观看| 亚洲AV无一区二区三区久久| 国内免费高清在线观看| 在线观看片免费人成视频播放| 亚洲中文字幕久久精品无码2021|