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

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

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

    數(shù)據(jù)加載中……
    clob大字段jdbc直連,新增和修改時不亂碼的處理

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.Reader;
    import java.io.StringReader;
    import java.sql.Clob;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    /**
     *
     * @author 沙振華
     *2008年9月26日
     */
      public class Clobnono
    {
        //ORACLE驅(qū)動程序
        private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
        //ORACLE連接用URL
        private static final String URL = "jdbc:oracle:thin:@10.62.1.12:1521:oracle";
        //用戶名
        private static final String USER = "wtdpf";
        //密碼
        private static final String PASSWORD = "wtdpf";
        //數(shù)據(jù)庫連接
        private static Connection conn = null;
        //SQL語句對象
        private static Statement stmt = null;
     //空的構(gòu)造方法
     public Clobnono(){}
     //建立測試用表格
        public static void createTables() throws Exception {
         try {
          stmt.executeUpdate("CREATE TABLE TEST_CLOB ( ID NUMBER(3), CLOBCOL CLOB)");
          //stmt.executeUpdate("CREATE TABLE TEST_BLOB ( ID NUMBER(3), BLOBCOL BLOB)");
           } catch (Exception ex) {}
         }

     
     /**
      *  * 描述:查出所有大字段的值
      * 沙振華
      * 2008-9-26
      * @param getclobpre 查詢語句
      * @param clob  大字段clob的列名
      * @throws Exception
      */ 
     public static String getClobPre(String getclobpre,String clob) throws Exception{
         String clobbig="";
      PreparedStatement pstm = null;//預(yù)處理語句,用于查詢數(shù)據(jù)
            ResultSet rs = null;
            pstm = conn.prepareStatement(getclobpre);
            rs = pstm.executeQuery();
            while(rs.next()){
            clobbig=getClobString(rs.getClob(clob));
                }
      return clobbig;
     }
        /*
         * 往數(shù)據(jù)庫中插入一個新的CLOB對象
         * insertSQL  插入空clob占位
         * updateSQL  把空值修改
         * bigString  大字段clob數(shù)據(jù)
         * updateColumn  大字段clob列名
         * */
       public static void clobInsert(String insertSQL,String updateSQL,String bigString,String updateColumn) throws Exception {
        /* 設(shè)定不自動提交 */
          boolean defaultCommit = conn.getAutoCommit();
          conn.setAutoCommit(false);
          try {
           /* 插入一個空的CLOB對象 */
           stmt.executeUpdate(insertSQL);
           /* 查詢此CLOB對象并鎖定 */
           ResultSet rs = stmt.executeQuery(updateSQL);
           while (rs.next()) {
            //* 取出此CLOB對象
            oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob(updateColumn);//updateColumn是要處理的大字段名
            /* 向CLOB對象中寫入數(shù)據(jù) */
            BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
            BufferedReader in = new BufferedReader(new StringReader (bigString));//bigString是要處理的大字段值
            int c;
            while ((c=in.read())!=-1) {
             out.write(c);
            }
            in.close();
            out.close();
           }
           /* 正式提交 */
           conn.commit();
          } catch (Exception ex) {
           /* 出錯回滾 */
           conn.rollback();
           throw ex;
          }
          //恢復(fù)原提交狀態(tài)
          conn.setAutoCommit(defaultCommit);
       }
         //讀取大字段clob
       public static String getClobString(Clob c) { 
        try {
         Reader reader=c.getCharacterStream();
         if (reader == null) {
          return null;
         }
         StringBuffer sb = new StringBuffer();
         char[] charbuf = new char[4096];
         for (int i = reader.read(charbuf); i > 0; i = reader.read(charbuf)) {
          sb.append(charbuf, 0, i);
         }
         return sb.toString();
        } catch (Exception e) {
         return "";
        }
       }
       //main方法
       public static void main(String[] args) throws Exception{
      /* 裝載驅(qū)動,建立數(shù)據(jù)庫連接 */
      Class.forName(DRIVER);
      conn = DriverManager.getConnection(URL,USER,PASSWORD);
      stmt = conn.createStatement();
      /* 建立測試表格 */
      createTables();
      /* CLOB對象插入 */
      clobInsert("insert into TEST_CLOB  (id,CLOBCOL) values ('789', empty_clob())", "select * from TEST_CLOB where id='789' for update", "大發(fā)發(fā)方法多發(fā)發(fā)生", "CLOBCOL");
      /* CLOB對象查詢 */
       String clobpre=getClobPre("select * from TEST_CLOB where id='789' ","CLOBCOL");
             System.out.println("**2333332@@@*"+clobpre);
            /* CLOB對象修改 */
             clobUpdate("select * from TEST_CLOB where id='789' for update","小忒啊對方答復(fù)的沙發(fā)啊", "CLOBCOL" );
            /* CLOB對象修改后查詢 */
             String clobuuuppp=getClobPre("select * from TEST_CLOB where id='789' ","CLOBCOL");
             System.out.println("**233333######32@@@*"+clobuuuppp);
       
      }
      /**
       *
       * 描述:
       * 沙振華
       * 2008-9-26
       * @param bigstring
       * @param updatesql
       * @param updatecolumn
       * @throws Exception
       */
       public static void clobUpdate( String updatesql,String bigstring, String updatecolumn) throws Exception {
             
           /* 設(shè)定不自動提交 */
           boolean defaultCommit = conn.getAutoCommit();
           conn.setAutoCommit(false);
           try {
               /*
                * 查詢CLOB對象并鎖定 SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR
                * UPDATE
                */
               ResultSet rs = stmt.executeQuery(updatesql);
               while (rs.next()) {
                   /*
                    * 獲取此CLOB對象 CLOBCOL
                    */
                   oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob(updatecolumn);
                   /* 進行覆蓋式修改 */
                   BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
                   BufferedReader in = new BufferedReader(new StringReader (bigstring));
                   int c;
                   while ((c = in.read()) != -1) {
                       out.write(c);
                   }
                   in.close();
                   out.close();
               }
               /* 正式提交 */
               conn.commit();
           }
           catch (Exception ex) {
               /* 出錯回滾 */
               conn.rollback();
               throw ex;
           }
           /* 恢復(fù)原提交狀態(tài) */
           conn.setAutoCommit(defaultCommit);
       }
      
    }  
          
          
          
         
          
          
     

     

     

     

     

     

     

    posted on 2008-09-26 17:36 沙振華 閱讀(739) 評論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产免费不卡v片在线观看| 在线免费播放一级毛片| 成人浮力影院免费看| 亚洲成a人片77777kkkk| 91福利免费网站在线观看| 亚洲AV无码一区二三区| 青青草97国产精品免费观看| 四虎永久在线精品免费观看地址| 青青青亚洲精品国产| 日韩精品电影一区亚洲| 最好2018中文免费视频| 中文字幕亚洲第一| 在线看片免费人成视频久网下载| 亚洲αv在线精品糸列| 日本高清不卡aⅴ免费网站| 亚洲一区二区电影| 亚欧在线精品免费观看一区| 亚洲一日韩欧美中文字幕在线| 无码一区二区三区免费视频 | 国产成人免费A在线视频| 亚洲AV无码一区二区三区鸳鸯影院| 国产不卡免费视频| 成人一区二区免费视频| 亚洲综合久久1区2区3区| 色妞WWW精品免费视频| 国产精品亚洲色婷婷99久久精品| 久久精品亚洲福利| 久久国产乱子伦免费精品| 亚洲91精品麻豆国产系列在线| 精品剧情v国产在免费线观看| 九九免费观看全部免费视频| 亚洲av永久无码精品网站| 99久久精品日本一区二区免费| 亚洲а∨精品天堂在线| 亚洲日韩乱码中文无码蜜桃臀网站| 免费女人高潮流视频在线观看| 亚洲一区二区三区无码国产| 亚洲成片观看四虎永久| 日本免费大黄在线观看| 亚洲av无一区二区三区| 亚洲AV综合色区无码一区|