日期:2014-05-18  浏览次数:20470 次

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)

……