跟踪petshop系列一: sqlhelp的参数缓存 续2--keywords的提取和分离

在这儿先说几句废话.作为初学者,刚开始接触时,根本就不知道该怎么入手.在我的系列中,我主要根据自己在学习时碰到的问题和疑惑展开并进行分析.相信初学者一定会受益非浅的.
前边已经提过的,操作数据库的字符串被缓存了起来,这就大大提高了运行效率.但当看到search.aspx时,又出现了问题:keywords的提取和分离.
我们在百度搜索时肯定用过多个关键字的查询吧!(如:我要查:petshop  参数。注意在这两个关键字之间有一个空格)在这里就是实现了同样的功能。分析后感觉很巧,特拿来分享阿。。。

在取得关键字后首先进行了过滤,替换掉危险字符
WebComponents.CleanString.InputText(Request["keywords"], 100);
然后调用
IList productsBySearch = product.GetProductsBySearch(searchKey);
{string[] keywords = text.Split();} //通过空格分离text的内容,这里很麻烦的
到了SQLServerDAL后,通过stringbuilder进行连接字符串
private const string SQL_SELECT_PRODUCTS_BY_SEARCH1 = "SELECT ProductId, Name, Descn FROM Product WHERE ((";
  private const string SQL_SELECT_PRODUCTS_BY_SEARCH2 = "LOWER(Name) LIKE '%' + {0} + '%' OR LOWER(Category) LIKE '%' + {0} + '%'";
  private const string SQL_SELECT_PRODUCTS_BY_SEARCH3 = ") OR (";
  private const string SQL_SELECT_PRODUCTS_BY_SEARCH4 = "))";

StringBuilder sql = new StringBuilder(SQL_SELECT_PRODUCTS_BY_SEARCH1);

    for (int i = 0; i < numKeywords; i++) {
    sql.Append(string.Format(SQL_SELECT_PRODUCTS_BY_SEARCH2, PARM_KEYWORD + i));
    sql.Append(i + 1 < numKeywords ? SQL_SELECT_PRODUCTS_BY_SEARCH3 : SQL_SELECT_PRODUCTS_BY_SEARCH4);   }
这里实现了其核心的功能。通过循环,把字符串中的格式符用变量文本替换掉
最后在给参数数组赋值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值