asp.net中的多条件查询 hashtable

 无论是B/S还是C/S,在做查询时都有很多的条件,那就是一个多条件的查询,网上很多的多条件查询都是用大量的if和else,那样不仅是代码繁杂,而且阅读起来很是不便,特别是当条件越多的时候(用到10个以上),我想。那些if和else就是拦路虎了,用不好,影响了整个程序的运行......

   现为大家介绍一种用HashTable做的多条件查询,大家都知道.HashTable是包含键值对的,我们何不把要查询的条件用HashTable来封装了?然后再来遍历HashTable,不就可以了吗?有人会说,你怎么知道别人的查询条件是输入了几个了?很简单啊,因为HashTable的一个特性就是不能放入空值,,当有空值时就不用放入HashTable了,这样HashTable里面放的都是输入的要查询的条件!把HashTable的健值用来作为查询的条件就OK了!!!

/// <summary>
  /// 根据条件哈希表,构造SQL语句中的AND条件子句
  /// </summary>
  /// <param name="conditionHash">条件哈希表</param>
  /// <returns>AND关系条件子句</returns>
        public static String GetConditionClause(Hashtable queryItems)
        {

            int Count = 0;
            String Where = "";

            //根据哈希表,循环生成条件子句
            foreach (DictionaryEntry item in queryItems)
            {
                if (Count == 0)
                    Where = " Where ";
                else
                    Where += " And ";

                //根据查询列的数据类型,决定是否加单引号
                if (item.Value.GetType().ToString() == "System.String" || item.Value.GetType().ToString() == "System.DateTime")
                {
                    Where += item.Key.ToString()
                        + " Like "
                        + SqlStringConstructor.GetQuotedString("%"
                        + item.Value.ToString()
                        + "%");
                }
                else
                {
                    Where += item.Key.ToString() + "= " + item.Value.ToString();
                }
                Count++;
            }
            return Where;
        }


ASP.net中Repeater控件多条件查询

03-28

大家好,请教大家一下,我刚学NET,遇到疑问,知道的朋友请帮忙一下,谢谢rnrn搜索: 国家(下拉) > 省级(下拉) > 市县(下拉) 关键字(文本框) 类别(下拉) 搜索(按钮)rnrn因为存在以下几种情况:rn1.当国家,省级,市县,为空时,关键不为空,搜索结果rn2.当国家不为空,关键字不为空,省级,市县为空时,搜索结果rn3.当国家,省级不为空,市县,关键字为空时,搜索结果rn4.当国家,省级,市县,都不为空时,关键字为空时,搜索结果.rn5.当国家,省级,市县,关键字,都不为空时,搜索结果rnrn大致搜索就是这些情况,该如何在C#里面实现,我目前写的是这样,总出错,出现表达式错误!rnrnrn //搜索关键字rn string sProvince = ddlProvince.SelectedValue.ToString(); //国家rn string sCity = ddlCity.SelectedValue.ToString(); //省级rn string sVilliage = ddlVilliage.SelectedValue.ToString(); //市县rn string sType = ToType.SelectedValue.ToString(); //分类rn string sKey = keyWord.Text.Trim(); //关键字rnrn switch (sType)rn rn case "请选择":rn break;rn case "No": //当选择搜索编号时rnrn if (sProvince != null && sCity == null) //当国家不为空,城市,区县,关键字为空时,执行rn rn s = s + " where 国家字段= " + sProvince;rn rnrn else if (sProvince != null && sCity != null) //当国家,省级不为空时rn rn s = s + " where 国家字段= " + sProvince + " and 省级字段=" + sCity;rn rn return;rnrnrn break;rn case "Wname":rn s = s + " where 字段 like " + "'%" + sKey + "%' OR 字段 like " + "'%" + sKey + "%'";rn break;rn rnrnrnrn谢谢大家rnrnrnrnrnrnrnrnrnrn

没有更多推荐了,返回首页