對DAL層進行封裝之SQLServerDALHelper

最近在做一個管理系統,發現DAL層的分頁方法都是一個模子,只是要查詢的表名和條件不一樣而已,而按照三層架構的方法你就得每個DAL文件裏都寫一遍分頁方法,感覺很繁瑣。於是我就靈活一旦,把這些可以封裝的通用方法拿出來,放到一個名爲SQLServerDALHelper的 文件裏,這樣就不用再每一個DAL層裏面寫了。由於我使用的動軟代碼生成器生成的代碼,有的方法就不用拿出去了,這裏封裝的是代碼生成器沒有生成的。有“分頁獲取列表”和“更新”兩個方法,其他方法以此類推,後續用到添加。

 

 

using Maticsoft.DBUtility;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace trip.Common
{
    /// <summary>
    /// DAL層通用方法
    /// </summary>
    public class SQLServerDALHelper
    {
        /// <summary>
        /// 分頁獲取數據列表
        /// </summary>
        /// <param name="PageSize">每頁顯示數據條數</param>
        /// <param name="PageIndex">當前頁</param>
        /// <param name="strWhere">查詢條件</param>
        /// <param name="Table">查詢表</param>
        /// <param name="Query">要查詢的字段</param>
        /// <returns></returns>
        public static DataSet GetList( int PageSize, int PageIndex, string strWhere, string Table,string Query="*")
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("select top " + PageSize);
            strSql.Append(" " + Query);
            strSql.Append(" from " + Table + " where ID not in(select top ");
            strSql.Append(PageSize * (PageIndex - 1));
            strSql.Append(" ID from " + Table);
            if (!string.IsNullOrEmpty(strWhere))
            {
                strSql.Append(" where " + strWhere);
                strSql.Append(") and " + strWhere);
            }
            else
            {
                strSql.Append(")");
            }
            return DbHelperSQL.Query(strSql.ToString());
        }

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="set"></param>
        /// <param name="strWhere"></param>
        /// <param name="Table"></param>
        /// <returns></returns>
        public bool Update(string set, string strWhere,string Table)
        {

            StringBuilder strSql = new StringBuilder();
            strSql.Append("update "+Table+" set");
            strSql.Append(set);
            strSql.Append(" where " + strWhere);
            int rows = DbHelperSQL.ExecuteSql(strSql.ToString());
            if (rows > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}


這樣,我們就可以像下面這樣調用了,是不是很方便?

 

/// <summary>
        /// 綁定repeater數據
        /// </summary>
        public void RepeaterDataBind()
        {
            try
            {
                StringBuilder sqlWhere = new StringBuilder();
                if (!string.IsNullOrEmpty(Number))
                {//維護
                    sqlWhere.Append(" Del!=0 and ParentNumber='");
                    sqlWhere.Append(Number + "'");
                    btn_Return.Visible = true;
                }
                else
                {//默認
                    sqlWhere.Append(" Del!=0 and ParentNumber='0'");
                }
                if (Session["where"] != null)
                {//查詢
                    sqlWhere.Append(Session["where"].ToString());
                }
                rep_Dictionary.DataSource = SQLServerDALHelper.GetList(this.AspNetPager1.PageSize, this.AspNetPager1.CurrentPageIndex, sqlWhere.ToString(), "trip_sys_Dictionary"); //綁定數據
                this.rep_Dictionary.DataBind();
                this.AspNetPager1.RecordCount = sys_DictionaryBLL.Instance.GetRecordCount(sqlWhere.ToString());//總記錄數
                AspNetPager1.CustomInfoHTML = "記錄總數:<b>" + AspNetPager1.RecordCount.ToString() + "</b>  ";
                AspNetPager1.CustomInfoHTML += "總頁數:<b>" + AspNetPager1.PageCount.ToString() + "</b>  ";
                AspNetPager1.CustomInfoHTML += "當前頁:<font color='red'><b>" + AspNetPager1.CurrentPageIndex.ToString() + "</b></font>";

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