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

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

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

    甜咖啡

    我的IT空間

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

    /**
      * 從數(shù)據(jù)庫(kù)中查詢IRI和KLO模型的數(shù)據(jù),并下載到本地
      * @param dataTime         時(shí)次
      * @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ù)庫(kù)中
      * @param dataTime     時(shí)次
      * @param iriFilePath  要上傳IRI文件的絕對(duì)路徑
      * @param kloFilePath  要上傳KLO文件的據(jù)對(duì)路徑
      * @param ANAFilePath  要上傳插值文件的據(jù)對(duì)路徑
      */
      @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+"時(shí)次已經(jīng)入庫(kù)!");
      return ;
      }
      // 插入一個(gè)空對(duì)象
      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對(duì)象,然后Cast為oracle.sql.BLOB
      BLOB blob = (BLOB) rs.getBlob("IRIDATA");
      // 到數(shù)據(jù)庫(kù)的輸出流
      OutputStream outStream = blob.getBinaryOutputStream();
      // 這里用一個(gè)文件模擬輸入流
      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對(duì)象,然后Cast為oracle.sql.BLOB
      blob = (BLOB) rs.getBlob("KLODATA");
      // 到數(shù)據(jù)庫(kù)的輸出流
      outStream = blob.getBinaryOutputStream();
      // 這里用一個(gè)文件模擬輸入流
      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對(duì)象,然后Cast為oracle.sql.BLOB
      blob = (BLOB) rs.getBlob("ANADATA");
      // 到數(shù)據(jù)庫(kù)的輸出流
      outStream = blob.getBinaryOutputStream();
      // 這里用一個(gè)文件模擬輸入流
      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 甜咖啡 閱讀(1334) 評(píng)論(0)  編輯  收藏


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


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

    導(dǎo)航

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

    統(tǒng)計(jì)

    常用鏈接

    留言簿(1)

    我參與的團(tuán)隊(duì)

    隨筆檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 久久黄色免费网站| 国产精品免费看久久久无码| 亚洲成电影在线观看青青| 成人午夜免费福利| 99久久成人国产精品免费| 男人天堂2018亚洲男人天堂| AV在线亚洲男人的天堂 | 在线观看永久免费| 朝桐光亚洲专区在线中文字幕 | 国产成人免费A在线视频| 色播在线永久免费视频网站| 亚洲Av高清一区二区三区| 亚洲精品色婷婷在线影院| 亚洲人成免费电影| 一区二区三区免费视频网站 | 99久久精品毛片免费播放| 亚洲爆乳无码专区www| 久久丫精品国产亚洲av| 亚洲VA综合VA国产产VA中| 亚洲免费视频播放| 精品无码一级毛片免费视频观看 | 亚洲精品午夜国产VA久久成人| 日韩一区二区a片免费观看 | 亚洲国产成人VA在线观看| 美女被cao免费看在线看网站| aa毛片免费全部播放完整| 亚洲国产一区二区三区在线观看 | 亚洲精品无码久久毛片波多野吉衣 | 最新仑乱免费视频| 人妻无码久久一区二区三区免费 | 国产AV无码专区亚洲AV琪琪| 亚洲国产成人精品无码区在线秒播| 国产成人精品亚洲精品| 国产一级淫片免费播放电影| 最近中文字幕免费mv视频8| 最近中文字幕免费完整| 日本免费久久久久久久网站| 国产精品99爱免费视频| 在线观看亚洲视频| 亚洲а∨精品天堂在线| 亚洲高清中文字幕免费|