小试了一下asp.net中的三层结构体系

显示层/逻辑层/数据层
显示层通常由.aspx/.aspx.cs文件构成,用来显示数据页面,按三层体系的分的话,页面层应该是直接调用逻辑层中的方法
逻辑层是一个中间层,用来连接页面层和数据层,它要给页面层提供接口同时也要从数据层中调用方法供页面层使用
数据层是最底层了,一般作数据方面的操作
呵,暂时这样解释这三层体系吧,小试了一吧.

页面层[default.aspx]:只有一个DataGrid控件和一个Label控件
页面的最终执行结果

default.aspx.cs文件

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using LemongTree.BL;
namespace services
{
	/// <summary>
	/// _default 的摘要说明。
	/// </summary>
	public class _default : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.Label Label1;
		protected System.Web.UI.WebControls.DataGrid DataGrid1;
	
		private void Page_Load(object sender, System.EventArgs e)
		{
			// 在此处放置用户代码以初始化页面
			if(!Page.IsPostBack)
			{
			setup("select * from favor",DataGrid1);
			}
		}
		private void setup(string sql,DataGrid dg)
		{
		BLayer bl = new BLayer("server=lemongtree;uid=sa;pwd=sa;database=bbs");
			bl.showDataGrid(sql,dg);
			Label1.Text=bl.error;
		}

		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
		{
		
		}
	}
}

逻辑层[BL.cs]

using System;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using LemongTree.DB;
using System.Web.UI.WebControls;
namespace LemongTree.BL
{
	/// <summary>
	/// BL 的摘要说明。
	/// </summary>
	public class BLayer
	{
		private string strconn;
		private SqlConnection objConn;
		private DBMaster dbm;
		private string ErrMsg;
		public BLayer(string strconn)
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
			this.strconn=strconn;
			this.objConn=new SqlConnection(strconn);
			dbm=new DBMaster(strconn);
		}
		public string error
		{
			get
			{
			return ErrMsg;
			}
		}
		public void showDataGrid(string strsql,DataGrid dgrd)
		{
			
			dgrd.DataSource=dbm.dataset(strsql);
			ErrMsg=dbm.Error;
			dgrd.DataBind();
		}
	}
}

数据层[DB.cs]

using System;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;
namespace LemongTree.DB
{
	/// <summary>
	/// DB 的摘要说明。
	/// </summary>
	public class DBMaster
	{
		private string strconn;
		private string msg;
		private SqlConnection objConn;
		public DBMaster(string strConn)
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
			this.strconn=strConn;
			this.objConn=new SqlConnection(strConn);
		}
		public string Error
		{
			get
			{
			return msg;
			}
		}
		public DataSet dataset(string strSql)
		{
			DataSet dst = new DataSet();
			try
			{
				dst = SqlHelper.ExecuteDataset(strconn,CommandType.Text,strSql);
				msg="记录总数:<b>"+dst.Tables[0].Rows.Count.ToString()+"</b>";
				return dst;
			}
			catch(SqlException e)
			{
				msg=e.Message;
			}
			finally
			{
				dst.Dispose();
			}
			return null;
		}
	}
}
原文地址:https://www.cnblogs.com/SOSOS/p/220425.html