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

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

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

    當柳上原的風吹向天際的時候...

    真正的快樂來源于創造

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
    編碼調試過程中,常有Sql語句的調試任務,這種任務比較麻煩的一點在于需要手工將?替換成參數,如果參數有十來個就夠讓人頭疼的.
    為了減輕這種無謂的勞動,本人設計了一個類來代替完成這種累而又容易讓人出錯的活.
    下面是代碼:
    package com.heyang;

    import java.text.MessageFormat;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    /**
     * 將SQL語句中的問號替換成參數
     * 此類用于調試SQL時減輕手工加入參數的勞動量
     * 
    @author heyang@gmail.com
     *
     
    */
    public class SqlCompletion{
        
    // 輸入的SQL語句
        private String sql;
        
        
    // 輸入的參數
        private String[] arr;
        
        
    // 構造函數
        public SqlCompletion(String sql,Object[] params){
            
    this.sql=sql;
            
            arr
    =new String[params.length];
            
            
    for(int i=0;i<arr.length;i++){
                arr[i]
    ="'"+params[i].toString()+"'";
            }
        }
        
        
    /**
         * 取得將問號替換成參數的補全SQL
         * 
    @return
         
    */
        
    public String getCompletedSql(){
            Pattern p 
    = Pattern.compile("\\?",Pattern.CASE_INSENSITIVE);

            Matcher m 
    = p.matcher(sql);
            StringBuffer sb 
    = new StringBuffer();

            
    boolean result = m.find();
            
    int index=0;

            
    while (result) {
                m.appendReplacement(sb, 
    "{"+index+"}");
                index
    ++;
                result 
    = m.find();
            }
            m.appendTail(sb);
            String repSql
    =sb.toString();

            
            
    return MessageFormat.format(repSql,arr);
        }
        
        
    // 測試
        public static void main(String[] args){
            Object[] params
    ={"c1","c2","c3","c4"};
            SqlCompletion s
    =new SqlCompletion("select * from t where t.f1=? and t.f2=? and t.f3=? and t.f4=? ",params);
            System.out.println(s.getCompletedSql());        
        }
    }

    輸出結果是:
    select * from t where t.f1='c1' and t.f2='c2' and t.f3='c3' and t.f4='c4'

    你可以把此類拷貝到你的項目中,只要標明我是原作者就行.
    posted on 2012-12-17 22:55 何楊 閱讀(557) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 亚洲愉拍99热成人精品热久久| 日美韩电影免费看| 亚洲av午夜福利精品一区| 国产自产拍精品视频免费看| 亚洲国产成人久久精品app| 亚洲欧美aⅴ在线资源| 久久久久免费看黄A片APP| 亚洲AV成人影视在线观看| 99视频在线免费观看| 人成午夜免费视频在线观看| 久久亚洲国产精品123区| 亚洲AV男人的天堂在线观看| 成人毛片免费观看视频在线| 亚洲av永久无码精品网址| 亚洲AV无码成人精品区大在线| 九九免费久久这里有精品23| 亚洲热线99精品视频| 日韩在线不卡免费视频一区| 亚洲免费闲人蜜桃| 日本午夜免费福利视频| 成人午夜影视全部免费看| 亚洲精品无码国产| 日本zzzzwww大片免费| 亚洲国产成人久久一区二区三区| va亚洲va日韩不卡在线观看| 国产午夜精品久久久久免费视| 亚洲视频一区在线播放| 女人被免费视频网站| 国产无遮挡色视频免费观看性色| 久久久久无码精品亚洲日韩| 免费无码肉片在线观看| 日韩电影免费在线观看网址| 久久精品国产亚洲香蕉| 免费看国产精品3a黄的视频| 一级成人a免费视频| 亚洲黄色在线电影| 婷婷亚洲天堂影院| 1000部拍拍拍18勿入免费视频软件 | 精品国产亚洲AV麻豆| 亚洲精品乱码久久久久久| 毛片免费视频播放|