<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
    主站蜘蛛池模板: 国产精品久久久久影院免费| 国产成人亚洲精品| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 亚洲av无码专区在线观看下载| 亚洲成av人在线视| 亚洲爆乳少妇无码激情| 亚洲AV无码一区东京热久久| 亚洲国产一成久久精品国产成人综合| 亚洲美女视频免费| 久久精品国产免费| 一个人免费观看视频在线中文| 亚洲人成人网毛片在线播放| 亚洲宅男永久在线| 日本最新免费不卡二区在线| 久久久久免费看成人影片| 亚洲成AV人片一区二区| www.亚洲色图| 成人爱做日本视频免费| 女性自慰aⅴ片高清免费| 猫咪免费人成在线网站| 中文无码亚洲精品字幕| 亚洲字幕在线观看| 亚洲日本中文字幕区| 亚洲va久久久噜噜噜久久天堂| 免费吃奶摸下激烈视频| 国产大片91精品免费看3| 性色av免费观看| 免费看香港一级毛片| 成人免费a级毛片无码网站入口 | 一二三四视频在线观看中文版免费| 久久中文字幕免费视频| 免费国产黄网站在线观看视频| a级成人免费毛片完整版| 日韩亚洲不卡在线视频中文字幕在线观看 | 亚洲欧洲在线观看| 久久精品亚洲综合专区| 久久青青成人亚洲精品| 黄色一级毛片免费看| 爱情岛亚洲论坛在线观看| 欧洲美女大片免费播放器视频| 国产亚洲综合一区二区三区|