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

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

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

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

    真正的快樂來源于創(chuàng)造

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

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

    /**
     * 將SQL語句中的問號替換成參數(shù)
     * 此類用于調(diào)試SQL時減輕手工加入?yún)?shù)的勞動量
     * 
    @author heyang@gmail.com
     *
     
    */
    public class SqlCompletion{
        
    // 輸入的SQL語句
        private String sql;
        
        
    // 輸入的參數(shù)
        private String[] arr;
        
        
    // 構(gòu)造函數(shù)
        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()+"'";
            }
        }
        
        
    /**
         * 取得將問號替換成參數(shù)的補全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());        
        }
    }

    輸出結(jié)果是:
    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 何楊 閱讀(553) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: jizzjizz亚洲日本少妇| 亚洲高清视频在线| 久久久久久av无码免费看大片| 在线观看成人免费视频| 色偷偷女男人的天堂亚洲网| 四虎1515hh永久久免费| 亚洲a级片在线观看| 成年美女黄网站18禁免费| 国产成人精品亚洲2020| 和日本免费不卡在线v| 亚洲已满18点击进入在线观看| 在线观看的免费网站| 中文字幕精品三区无码亚洲| 成在线人永久免费视频播放| 羞羞视频免费观看| 亚洲综合亚洲综合网成人| 成人无码精品1区2区3区免费看| 亚洲精品亚洲人成在线观看| 久久狠狠躁免费观看| 亚洲一级毛片免费看| 黄网址在线永久免费观看 | 最近中文字幕高清免费中文字幕mv| 亚洲成年轻人电影网站www| 精品香蕉在线观看免费| 亚洲真人无码永久在线观看| 国产成人免费高清在线观看| 一级片在线免费看| 亚洲国产精品成人久久| 国产免费看JIZZ视频| 男性gay黄免费网站| 亚洲国产精品一区二区久久hs| 亚洲第一网站免费视频| 亚洲精品无码少妇30P| AV在线播放日韩亚洲欧| 18成禁人视频免费网站| 亚洲精品无码你懂的| 国产亚洲一区二区精品| AV免费网址在线观看| 久久免费观看视频| 亚洲一区中文字幕在线电影网| 亚洲成av人片不卡无码久久|