Gridview分頁查詢數據,當數據爲空時候在查詢語句中的判斷

 

今天鬱悶了半天,當查詢數據列表時候由於數據庫沒有判斷是否爲空,已導致查詢語句不通過,想了一種方法,希望對你們也有所幫助昂!

用戶表名稱: SysUser ;給其起了一個別名:u

員工表名稱: BasicEmployee: 給其起了一個別名:e

分別按照用戶名稱,用戶類型,是否凍結:查詢用戶表的數據:

select u.*,e.Name as RealName from

(select * from SysUser where IsDelete=0

and (@UserName is null or UserName=@UserName)

and (@UserType is null or UserType=@UserType)

and (@IsUse is null or IsUse=@IsUse))   u left join BasicEmployee e on u.EmployeeID=e.EmployeeID

這樣就可以瞭如果@UserName 爲空值的時候 那麼在後臺使用的時候就可以給@UserName=null 如果文本框有值也就是說@UserName數據不爲空,@UserName=這個文本框的值;

以下是這個例子:

1 在dal 層中:
  /// <summary>
        /// 用字符串拼接的形式,讀取分頁的數據
        /// </summary>
        /// <param name="pageSize">分頁大小</param>
        /// <param name="pageIndex">當前頁碼</param>
        /// <param name="rowCount">數據條數</param>
        /// <param name="orderField">排序字段</param>
        /// <param name="prms">條件字典表</param>
        /// <returns></returns>
        public DataSet GetPaging(int pageSize, int pageIndex, ref int rowCount, string orderField, Dictionary<string, object> prms)
        {
            DB dbUtil = DB.GetInstance();
            StringBuilder sb = new StringBuilder();
            sb.Append("select u.*,e.Name as RealName from (select * from SysUser where IsDelete=0 and (@UserName is null or UserName=@UserName) and (@UserType is null or UserType=@UserType) and (@IsUse is null or IsUse=@IsUse))");
            sb.Append("  u left join BasicEmployee e on u.EmployeeID=e.EmployeeID");
            Database db = this.CreateDatabase();

            //獲取數據條數
            DbCommand cmdCount = dbUtil.GetDbCommandDataCount(db, sb.ToString());
            db.AddInParameter(cmdCount, "@UserName", DbType.String, prms["@UserName"]);
            db.AddInParameter(cmdCount, "@UserType", DbType.Int32, prms["@UserType"]);
            db.AddInParameter(cmdCount, "@IsUse", DbType.Int32, prms["@IsUse"]);
            rowCount = Convert.ToInt32(db.ExecuteScalar(cmdCount));
            //獲取分頁數據
            DbCommand cmdPaging = dbUtil.GetDbCommandPaging(db, sb.ToString(), pageSize, pageIndex, rowCount, orderField);
            db.AddInParameter(cmdPaging, "@UserName", DbType.String, prms["@UserName"]);
            db.AddInParameter(cmdPaging, "@UserType", DbType.Int32, prms["@UserType"]);
            db.AddInParameter(cmdPaging, "@IsUse", DbType.Int32, prms["@IsUse"]);
            //執行命令獲取數據
            return db.ExecuteDataSet(cmdPaging);
        }

BLL中:

 /// <summary>
        /// 用字符串拼接的形式,讀取分頁的數據
        /// </summary>
        /// <param name="pageSize">分頁大小</param>
        /// <param name="pageIndex">當前頁碼</param>
        /// <param name="rowCount">數據條數</param>
        /// <param name="orderField">排序字段</param>
        /// <param name="prms">條件字典表</param>
        public DataSet GetPaging(int pageSize, int pageIndex, ref int rowCount, string orderField, Dictionary<string, object> prms)
        {
            return dal.GetPaging(pageSize, pageIndex, ref rowCount, orderField, prms);
        }
前臺調用字典表數據:

   public Dictionary<string, object> GetPagingUser()
        {
            dic.Clear();
            string realname = this.txtRealName.Text.Trim();
            string usertype = this.ddlUserType.SelectedValue;
            string isuser=this.rblIsUse.SelectedValue ;
            if (this.txtUserName.Text.Trim().Length == 0)
            {
                dic.Add("@UserName", null);
            }
            else
            {
                dic.Add("@UserName", this.txtUserName.Text.Trim());
            }
            if (usertype =="-1")
            {
                dic.Add("@UserType", null);
            }
            else
            {
                dic.Add("@UserType", usertype);
            }
            if(isuser=="-1")
            {
                dic.Add("@IsUse", null);
            }
                else
            {
                dic.Add("@IsUse", isuser);
            }
            return dic; 
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章