当前位置: 代码迷 >> ASP.NET >> Asp.net 多文本查询,该如何解决
  详细解决方案

Asp.net 多文本查询,该如何解决

热度:3292   发布时间:2013-02-25 00:00:00.0
Asp.net 多文本查询
一个页面有很多文本,如id,email,name,age等,有时只按一个,有是按多个或全部查询,这样该怎么写判断,有if,else那么多条件很麻烦,光这四个就有很多种查法了,有什么好的写法吗?

------解决方案--------------------------------------------------------

sql拼接呀 小盆友..
C# code
 /// <summary>        /// 根据日期,资源名称,资源描述查询资源信息        /// </summary>        /// <returns></returns>        public DataSet FN_SerchByDateAndType(Guid FolderId, NRModel.File model, string createdate, string endate)        {            string strSql = "select * from t_File where 1 =1 and FolderId=@FolderId";            string strWhere = "";            if (!string.IsNullOrEmpty(model.FileNam))            {                strWhere += " and FileNam like @FileNam";            }            //if (!string.IsNullOrEmpty(model.Decription)k)            //{            //    strWhere += " and Decription like @Decription";            //}            if (!string.IsNullOrEmpty(createdate) || !string.IsNullOrEmpty(endate))            {                strWhere += " and CreateOn between @createdate and @endate order by ModefyOn desc";            }            strSql += strWhere;            SqlParameter[] parameters = {                                new SqlParameter("@FolderId", SqlDbType.UniqueIdentifier),                                new SqlParameter("@FileNam", SqlDbType.NVarChar, 256),                                new SqlParameter("@createdate", SqlDbType.NVarChar),                                new SqlParameter("@endate", SqlDbType.NVarChar)                        };            parameters[0].Value = FolderId;            parameters[1].Value = "%" + model.FileNam + "%";            //parameters[1].Value = "%" + model.Decription + "%";            parameters[2].Value = createdate;            parameters[3].Value = endate;            return DbHelperSQL.Query(strSql, parameters);            //SqlParameter[] parameters = new SqlParameter[4];            //parameters[0] = new SqlParameter("@FileNam", model.FileNam);            //parameters[1] = new SqlParameter("@stardate", createdate);            //parameters[2] = new SqlParameter("@enddate", endate);            ////执行存储过程            //return DbHelperSQL.RunProcedure("P_UserSerch", parameters, "t_File");        }
------解决方案--------------------------------------------------------
当email为空时,始终为真,接着判断其他条件是否满足,这个问题貌似已经问过了
SQL code
select * from A where (id=@id or @id is null) and (email=@email or @email is null) and (name=@name or @name is null)
------解决方案--------------------------------------------------------

探讨

引用:
当email为空时,始终为真,接着判断其他条件是否满足,这个问题貌似已经问过了

SQL code
select * from A where (id=@id or @id is null) and (email=@email or @email is null) and (name=@name or @name is null)

……
  相关解决方案