既然是三层,肯定在物理逻辑上就要进行区分的,因此在项目文件夹下,有WebUI、BLL、DAL、Common这四个文件夹和Default.aspx等首页文件,其实最主要的就是前三个文件夹,Common文件夹里保存了一些样式文件和JS文件,个人感觉这些文件可以放到WebUI里的。o(∩_∩)o...,这几个文件夹用来作什么应该从命名上能看出来吧?WebUI用来保存页面文件,也就是大家在浏览网页的时候能看见的,最直观的,也是这三层中最简单的;BLL用来保存业务逻辑,起到一个承上启下的作用,用来连接WebUI层和DAL层,主要是定义一些方法,相对来讲比WebUI要复杂;DAL文件夹主要是保存对数据库操作的一些文件,主要是对一些SQL语句(存储过程)的执行。这三层之间的关系是上层引用下层,即WebUI引用BLL,BLL引用DLL。这三层联系起来就是这样一个过程:在页面添加一些信息经过合理性判断(WebUI)后调用BLL层的函数(方法),下面的代码属于WebUI层
int intUserID = (int)this.LogonUser.User_Emp.Rows[0]["UserId"];//获得当前登陆用户的ID
DataSet ds = contractRule.GetContractList_By_ApplicantID( intUserID, flag, rentName, startDate, endDate, isOpen );//其中GetContractList_By_ApplicantID()就是ContractRule.cs(BLL层)中的一个方法
ds.Tables[0].DefaultView.Sort = ViewState["Sort"].ToString();
this.dgPayment.DataSource = ds.Tables[0].DefaultView;
this.dgPayment.DataKeyField = "ContractID";
this.dgPayment.DataBind();在ContractRule.cs页面根据传过来的数据再调用ContractDA.cs(DLL层)的方法,下面的代码属于BLL层 /** <summary>
/// 根据用户获得合同信息
/// </summary>
/// <param name="intApplicantID"></param>
/// <param name="flag"></param>
/// <param name="contractName"></param>
/// <param name="dtBeginDate"></param>
/// <param name="dtEndDate"></param>
/// <returns></returns>
public DataSet GetContractList_By_ApplicantID(int intApplicantID, int flag, string contractName, DateTime dtBeginDate, DateTime dtEndDate, bool isOpen)
...{
using( ContractDA contractDA = new ContractDA() )
...{
return contractDA.GetContractList_By_ApplicantID( intApplicantID,flag,contractName,dtBeginDate,dtEndDate,isOpen);//其中GetContractList_By_ApplicantID()是ContractDA.cs(DLL层)页面中的一个方法 }
}在ContractDA.cs页面中的GetContractList_By_ApplicantID()方法根据传入的信息,通过SQL语句(存储过程)来进行对数据库的操作。下面的代码属于DAL层 /** <summary>
/// 根据用户获得合同信息
/// </summary>
/// <param name="intApplicantID"></param>
/// <param name="flag"></param>
/// <param name="contractName"></param>
/// <param name="dtBeginDate"></param>
/// <param name="dtEndDate"></param>
/// <returns></returns>
public DataSet GetContractList_By_ApplicantID(int intApplicantID, int flag, string contractName, DateTime dtBeginDate, DateTime dtEndDate, bool isOpen)
...{
SqlCommand command = new SqlCommand();
command.CommandText = "Contract_Query";//存储过程名
command.Connection = this.mySqlConnection;
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add( "@ApplicantID", intApplicantID );//传入参数
//tg070712
command.Parameters.Add( "@Flag", flag );/传入参数
command.Parameters.Add( "@ContractName", contractName );/传入参数
command.Parameters.Add( "@BeginDate", dtBeginDate );/传入参数
command.Parameters.Add( "@EndDate", dtEndDate );/传入参数
this.mySqlDataAdapter.SelectCommand = command;
DataSet ds = new DataSet();
this.mySqlDataAdapter.Fill( ds );
return ds;//返回ds数据集
}
至此,一个三层意义上的数据流转过程就完成了。因为自己入门不是很深,所以上面的想法未免有纰漏,还请各路高手指点。