<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 何楊 閱讀(554) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 亚洲一区中文字幕| 欧美男同gv免费网站观看| 无套内谢孕妇毛片免费看看| 亚洲av无码专区在线观看下载| 日韩精品视频在线观看免费| 国产免费观看a大片的网站| 日本亚洲成高清一区二区三区| 亚洲电影一区二区| 色噜噜的亚洲男人的天堂| 你懂的在线免费观看| 国产91色综合久久免费| 免费在线精品视频| 亚洲五月丁香综合视频| 免费观看一区二区三区| 国产在线a不卡免费视频| 亚洲美女激情视频| 青青青视频免费观看| 亚洲热妇无码AV在线播放| 亚洲国产精品专区| 国产偷伦视频免费观看| 国产嫩草影院精品免费网址| 乱淫片免费影院观看| 久久免费精品视频| 亚洲精品国产啊女成拍色拍| 久久久久免费精品国产| 亚洲an日韩专区在线| 国产伦一区二区三区免费| 国产线视频精品免费观看视频| 亚洲国产精品无码久久青草| 亚洲最大天堂无码精品区| 久久久久久夜精品精品免费啦| 69式国产真人免费视频| 精品无码一区二区三区亚洲桃色| 福利免费在线观看| 亚洲精品国产福利片| 免费人成在线观看网站品爱网日本| 久艹视频在线免费观看| 亚洲a一级免费视频| 免费看大美女大黄大色| 亚洲综合偷自成人网第页色 | 18禁网站免费无遮挡无码中文 |