既然是三层,肯定在物理逻辑上就要进行区分的,因此在项目文件夹下,有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数据集
        }

 

至此,一个三层意义上的数据流转过程就完成了。因为自己入门不是很深,所以上面的想法未免有纰漏,还请各路高手指点。

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1716367