巧拼SQL语句

http://www.cnblogs.com/eavia/archive/2011/01/21/1940963.html

 

public DataTable GetDataTable(KeyValuePair<string, object>[] KeyValue)
        {
            StringBuilder strSql = new StringBuilder();
            string languageTag = SYS.Cmn.SysCmnVar.LanguageTag;
            strSql.Append(@"SELECT BT.*,warn.DATANAME AS 'ProductsWarning' FROM ({0}) BT INNER JOIN (SELECT DISTINCT DATAVALUE,DATANAME FROM tab_datafunctionstatus datawry WHERE (datawry.FunctionStatus='StorageProductsMinWarning' OR datawry.FunctionStatus='StorageProductsMaxWarning') AND datawry.dataLanguage='" + languageTag + "') warn");
            strSql.Append(" On BT.WarningStatus=warn.dataValue ");
            if (KeyValue.Length != 0)
            {
                strSql.Append(" Where 1=1 ");
                for (int i = 0; i < KeyValue.Length; i++)
                {
                    KeyValuePair<string, object> obj = KeyValue[i];
                    string [] metaDataArray=((string)FMap[obj.Key]).Split('|');
                    StringBuilder temp = new StringBuilder(CondinOuterText);
                    temp.Replace("#Null$", metaDataArray[0])
                    .Replace("#FiledName#","BT." + metaDataArray[2])
                    .Replace("#Option#", metaDataArray[1])
                    .Replace("#Value$", string.Format(metaDataArray[3], obj.Value.ToString()));
                    strSql.Append(temp.ToString());
                }
            }
            string sqlcomplete = string.Format(strSql.ToString(), BaseSqlString);
            return SYS.Cmn.MySqlControl.SQLServerHelper.Query_DataTable(sqlcomplete);
        }

        static Hashtable FMap = null;
        static DACStorageProductsQuery()
        {
            FMap = new Hashtable();
            FMap.Add("products_name", "''|=|products_name|'{0}'");
            FMap.Add("storage_name", "''|=|storage_name|'{0}'");
            FMap.Add("manufacturers_company", "''|=|manufacturers_company|'{0}'");
            FMap.Add("ProductsWarning", "''|=|ProductsWarning|'{0}'");
            FMap.Add("productiondatebegin", "''|<=|productiondate|'{0}'");
            FMap.Add("productiondateend", "''|=>|productiondate|'{0}'");
            FMap.Add("products_price_summin", "0|<=|products_price_sum|{0}");
            FMap.Add("products_price_summax", "0|=>|products_price_sum|{0}");
            FMap.Add("mafuproductiondatebegin", "''|<=|mafuproductiondate|'{0}'");
            FMap.Add("mafuproductiondateend", "''|=>|mafuproductiondate|'{0}'");
            FMap.Add("products_amount_summin", "0|<=|products_amount_sum|{0}");
            FMap.Add("products_amount_summax", "0|=>|products_amount_sum|{0}");
        }
        const string CondinOuterText = @" AND ( #Null$ = #FiledName# OR #Value$ #Option#  #FiledName# ) ";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值