前台搜索的条件有关键字搜索和日期段搜索
我希望能在DAL里的SQL里面将这些条件处理一下
比如用户只输入一个条件可以查询 可以输入条件加日期段也可以查询 还有就是输入框只有一个的情况下 我如果想判断它是否输入的是信息中的资源名称为关键字呢还是信息描述为关键字 。

解决方案 »

  1.   

    这个不要在DAL 层做,因为DAL就数据操作层,就是对数据层的增删更查。涉及到逻辑运算的,就要放在BLL层,这也是BLL层存在的意义。就比如说,像关键字搜索和日期段搜索
    数据库就有这两种查询在BLL层判断一下,如果是关键字搜索,就用DAL内面的关键字搜索方法
    如果是日期段搜索就用DAL内面的日期段搜索方法
      

  2.   

    我记得有数据库有一个isnull来判断用户是不是使用了某个字段作为查询条件 一时间忘记了用法 我在想
      

  3.   

    拼接WHERE条件string str="select * from table where 1=1";基本查询如果点时间就
    str+= and 时间字段='"+参数+"';
    其他同理
      

  4.   

    拼接在dal里面能好点  虽然有少量判断 但不至于暴露sql关键字
      

  5.   

    写在BLL里。
    生成的SQL 拿去DAL查
      

  6.   

    DAL和BLL层 个人觉得区别不是很大的吧
      

  7.   

    这个+=之后不需要那个isnull的判断吗?
      

  8.   

    子夜的意思是这样的
    /// <summary>
    /// 获得数据列表
    /// </summary>
    public DataSet GetList(string strWhere)
    {
    StringBuilder strSql=new StringBuilder();
    strSql.Append("select id,imgRul,imgSrc,title,ml,XMLRul ");
    strSql.Append(" FROM Rss ");
    if(strWhere.Trim()!="")
    {
    strSql.Append(" where "+strWhere);
    }
    return DbHelperSQL.Query(strSql.ToString());
    }上面是DAL代码你在BLL做判断,拼造where语句。
    然后传进去就行了
      

  9.   

    写个存储过程不是更好?在存储过程里判断到底传进来了几个参数,分多种情况做处理,虽然写的代码可能会多一些,但效率比拼SQL语句要好哦