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