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

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

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

    甜咖啡

    我的IT空間

    向oracle數(shù)據(jù)庫存儲文件,并讀出文件

    /**
      * 從數(shù)據(jù)庫中查詢IRI和KLO模型的數(shù)據(jù),并下載到本地
      * @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模型的文件上傳到數(shù)據(jù)庫中
      * @param dataTime     時次
      * @param iriFilePath  要上傳IRI文件的絕對路徑
      * @param kloFilePath  要上傳KLO文件的據(jù)對路徑
      * @param ANAFilePath  要上傳插值文件的據(jù)對路徑
      */
      @SuppressWarnings("static-access")
      public static void insertBlogInfo(String dataTime, String IRIFilePath, String KLOFilePath, String ANAFilePath) {
      try {
      Connection con = DBConnectionManager.getInstance().getConnection();
      // 處理事務(wù)
      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+"時次已經(jīng)入庫!");
      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方式鎖定數(shù)據(jù)行
      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()) {
      // 得到j(luò)ava.sql.Blob對象,然后Cast為oracle.sql.BLOB
      BLOB blob = (BLOB) rs.getBlob("IRIDATA");
      // 到數(shù)據(jù)庫的輸出流
      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);
      }
      // 依次關(guān)閉(注意順序)
      fin.close();
      outStream.flush();
      outStream.close();
     
      // 得到j(luò)ava.sql.Blob對象,然后Cast為oracle.sql.BLOB
      blob = (BLOB) rs.getBlob("KLODATA");
      // 到數(shù)據(jù)庫的輸出流
      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);
      }
      // 依次關(guān)閉(注意順序)
      fin.close();
      outStream.flush();
      outStream.close();
     
      // 得到j(luò)ava.sql.Blob對象,然后Cast為oracle.sql.BLOB
      blob = (BLOB) rs.getBlob("ANADATA");
      // 到數(shù)據(jù)庫的輸出流
      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);
      }
      // 依次關(guān)閉(注意順序)
      fin.close();
      outStream.flush();
      outStream.close();
     
      con.commit();
      /* 恢復(fù)原提交狀態(tài) */
      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 甜咖啡 閱讀(1341) 評論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

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

    統(tǒng)計

    常用鏈接

    留言簿(1)

    我參與的團(tuán)隊

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 综合亚洲伊人午夜网 | 香蕉蕉亚亚洲aav综合| 一区国严二区亚洲三区| 免费又黄又硬又爽大片| 亚洲精品黄色视频在线观看免费资源| 亚洲七七久久精品中文国产| 亚洲av综合日韩| 成年免费a级毛片免费看无码| 野花香高清视频在线观看免费| 最近中文字幕大全中文字幕免费| 99久久久国产精品免费蜜臀| 大学生美女毛片免费视频| 男人的天堂亚洲一区二区三区| 亚洲国产视频网站| 国产精品亚洲专区在线播放| 日本免费污片中国特一级| 免费大香伊蕉在人线国产| 亚洲国产二区三区久久| 精品亚洲国产成人av| 亚洲av无码专区在线观看素人| 亚洲美女自拍视频| 免费国产污网站在线观看不要卡| 日本在线看片免费人成视频1000 | 99久久人妻精品免费一区| 亚洲成a人片77777群色| 久久久久国色AV免费看图片| 亚洲人成在线播放网站| 亚洲国产aⅴ成人精品无吗| 久操视频在线免费观看| 精品久久亚洲中文无码| 男女午夜24式免费视频| 亚洲fuli在线观看| 亚洲国产一成久久精品国产成人综合| 本免费AV无码专区一区| 亚洲第一网站免费视频| 国内永久免费crm系统z在线| 久久影视国产亚洲| caoporm超免费公开视频| 国产一级理论免费版| 最近的2019免费中文字幕| 国产亚洲精品AA片在线观看不加载 |