最近在做一個管理系統,發現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)
{
}
}