码迷,mamicode.com
首页 > 其他好文 > 详细

三层架构笔记誊录

时间:2015-10-02 16:05:29      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

html:提供内容
css:提供美化、样式
js:提供控制、效果

饭馆:
服务员、厨师、采购员 菜
三层:
表示层(ui):和用户交互
业务逻辑层(bll):提供具体的业务逻辑,隔离UI和DAL(做一些判断,把UI中输入的数据和DAL层返回的数据做处理)
数据访问层(dal):操作数据库
实体(model):在三层中传递数据
为什么要用三层:

创建三层:
1、创建一个空的解决方案
2、创建三个类库项目(model:ItcastSIMModel、dal:ItcastSIMDAL、bll:ItcastSIMBLL)
3、创建一个UI层(windows项目:ItcastSIM)
4、在类库属性中更改默认命名空间(也可以不改)model:ItcastSIM.Model、dal:ItcastSIM.DAL、bll:ItcastSIM.BLL
5、添加引用(从上往下ui>bll>dal,三层都要引用model)
6、配置文件加到UI中(哪个项目运行就在哪个项目中加配置文件)
7、DAL层加sqlhelper,(改命名空间与当前项目一致)并添加configration的引用
8、同时还要using各层的命名空间,例如:ItcastSIM.Model
9、添加引用的循序:
ui>bll model
bll>dal model
dal>model
然后数据一层一层的返回
查询:把关系转化成对象。把数据库中的数据转成对象返回给DAL,然后返回给UI(把查询出来的datatable转化为persond对象,并为每个属性赋值)
插入、修改,删除等:把对象转化成关系。插入到数据库中
一张表对应一个类,数据库中的一个字段对应类中的一个字段和属性(ORMaping 映射)

public boll updatePwd(string name,string oldpwd,string nwepwd)//dll
{

}

//正则表达式匹配密码输入
 if (txtPwd.Text.Length != 0)
            {
                string regex = @"^\d{6}$";
                if (Regex.IsMatch(txtPwd.Text, regex))
                {
                    lbRgex.Text = "密码正确";
                    button1.Enabled = true;
                }
                else
                {
                    lbRgex.Text = "含有非法字符";
                    txtPwd.Focus();
                    button1.Enabled = false;
                }
            }
//判断2次密码是否一致        
Match m = Regex.Match(txtPwd.Text, "^"+txtPwd2.Text+"$");
                if (m.Success)
                {
                    lbRgex.Text = "注册成功!";
                }
                else
                {
                    lbRgex.Text = "2次密码不一致!请重新输入!";
                }

                
//判断是否输入字数
                
int value;
if(!int.TryParse(str,out value))
{
messagebox.show("输入有错误,请重新输入!");
  return;
}
               

public int updatepwd(string name,string newpwd)//dal

string isdel = dr["isDel"].ToString() == "true" ? "停用" : "正常";

per.PGender=rdoMale.checked?"":"";

person中的gender是个bool(t/f) 类型, 在数据库中是个bit(0\1)类型,所以在新增的时候,必须转化下
person per;
bool sex=per.PGender==""?true:false;
插入语句的参数用sex代替
new sqlparameter("@PGender",sex);

cmd.Parameters.Add(new SqlParameter("@name", temp[0]));
cmd.Parameters.AddWithValue("@age", temp[2]);
// cmd.Parameters.AddWithValue("@gender", temp[1] == "男" ? true : false);
cmd.Parameters.AddWithValue("@gender", DBNull.Value);

 //从下拉框中获得性别
            if (!cboSearchGender.SelectedItem.ToString().Equals("不限"))
            {
                sqlWhere += " and PGender=@PGender";
                listParas.Add(new SqlParameter("@PGender", cboSearchGender.Text.Equals("")? "1" : "0"));
            }
            //学生姓名 条件
            if (!string.IsNullOrEmpty(stuName))
            {
                sqlWhere += " and PCName like @PCName";
                listParas.Add(new SqlParameter("@PCName", "%" + txtSearchName.Text.Replace("", "") + "%"));
            }
            //删除状态  条件
            if (IsListNotDel)
                sqlWhere += " and PIsDel=0";
            else
                sqlWhere += " and PIsDel=1";

从数据库中查询出来的gender 是bit类型的,转换成person类的时候要
就行转化:bool b=convert.toboolean(per.gender);
if(b)
{
rdoMale.checked=true;
rbofemal.checked=false;
}

 //得到一个对象实体
 
 ItcastSIM.Model.Person model=new ItcastSIM.Model.Person();
            DataSet ds=DbHelperSQL.Query(strSql.ToString(),parameters);
            if(ds.Tables[0].Rows.Count>0)
            {
                if(ds.Tables[0].Rows[0]["PID"].ToString()!="")
                {
                    model.PID=int.Parse(ds.Tables[0].Rows[0]["PID"].ToString());
                }
                if(ds.Tables[0].Rows[0]["PCID"].ToString()!="")
                {
                    model.PCID=int.Parse(ds.Tables[0].Rows[0]["PCID"].ToString());
                }
                if(ds.Tables[0].Rows[0]["PType"].ToString()!="")
                {
                    model.PType=int.Parse(ds.Tables[0].Rows[0]["PType"].ToString());
                }
                model.PLoginName=ds.Tables[0].Rows[0]["PLoginName"].ToString();
                model.PCName=ds.Tables[0].Rows[0]["PCName"].ToString();
                model.PPYName=ds.Tables[0].Rows[0]["PPYName"].ToString();
                model.PPwd=ds.Tables[0].Rows[0]["PPwd"].ToString();
if(ds.Tables[0].Rows[0]["PGender"].ToString()!="")
{
if((ds.Tables[0].Rows[0]["PGender"].ToString()=="1")||(ds.Tables[0].Rows[0]["PGender"].ToString().ToLower()=="true"))
{
model.PGender=true;
}
else
{
model.PGender=false;
}
}


UI:

 StringBuilder strWhere = new StringBuilder();
            if (txtKeyword.Text.Trim() != "")
            {      
                #warning 代码生成警告:请修改 keywordField 为需要匹配查询的真实字段名称
                strWhere.AppendFormat("keywordField like ‘%{0}%‘", txtKeyword.Text.Trim());
            }            
            ds = bll.GetList(strWhere.ToString());   

BLL:

  /// <summary>
        /// 获得数据列表
        /// </summary>
        public DataSet GetList(string strWhere)
        {
            return dal.GetList(strWhere);
        }

DAL:        
/// <summary>
        /// 获得数据列表
        /// </summary>
        public DataSet GetList(string strWhere)
        {
            StringBuilder strSql=new StringBuilder();
            strSql.Append("select PID,PCID,PType,PLoginName,PCName,PPYName,PPwd,PGender,PEmail,PAreas,PIsDel,PAddTime ");
            strSql.Append(" FROM Person ");
            if(strWhere.Trim()!="")
            {
                strSql.Append(" where "+strWhere);
            }
            return DbHelperSQL.Query(strSql.ToString());
        }


/// <summary>
        /// 获得数据列表
        /// </summary>
        public List<ItcastSIM.Model.Person> DataTableToList(DataTable dt)
        {
            List<ItcastSIM.Model.Person> modelList = new List<ItcastSIM.Model.Person>();
            int rowsCount = dt.Rows.Count;
            if (rowsCount > 0)
            {
                ItcastSIM.Model.Person model;
                for (int n = 0; n < rowsCount; n++)
                {
                    model = new ItcastSIM.Model.Person();
                    if(dt.Rows[n]["PID"].ToString()!="")
                    {
                        model.PID=int.Parse(dt.Rows[n]["PID"].ToString());
                    }
                    if(dt.Rows[n]["PCID"].ToString()!="")
                    {
                        model.PCID=int.Parse(dt.Rows[n]["PCID"].ToString());
                    }
                    if(dt.Rows[n]["PType"].ToString()!="")
                    {
                        model.PType=int.Parse(dt.Rows[n]["PType"].ToString());
                    }
                    model.PLoginName=dt.Rows[n]["PLoginName"].ToString();
                    model.PCName=dt.Rows[n]["PCName"].ToString();
                    model.PPYName=dt.Rows[n]["PPYName"].ToString();
                    model.PPwd=dt.Rows[n]["PPwd"].ToString();
                    if(dt.Rows[n]["PGender"].ToString()!="")
                    {
                        if((dt.Rows[n]["PGender"].ToString()=="1")||(dt.Rows[n]["PGender"].ToString().ToLower()=="true"))
                        {
                        model.PGender=true;
                        }
                        else
                        {
                            model.PGender=false;
                        }
                    }
                    model.PEmail=dt.Rows[n]["PEmail"].ToString();
                    model.PAreas=dt.Rows[n]["PAreas"].ToString();
                    if(dt.Rows[n]["PIsDel"].ToString()!="")
                    {
                        if((dt.Rows[n]["PIsDel"].ToString()=="1")||(dt.Rows[n]["PIsDel"].ToString().ToLower()=="true"))
                        {
                        model.PIsDel=true;
                        }
                        else
                        {
                            model.PIsDel=false;
                        }
                    }
                    if(dt.Rows[n]["PAddTime"].ToString()!="")
                    {
                        model.PAddTime=DateTime.Parse(dt.Rows[n]["PAddTime"].ToString());
                    }
                    modelList.Add(model);
                }
            }
            return modelList;
        }


//保存或新增的时候判断
public void btnSave_Click(object sender, EventArgs e)
        {
            
            string strErr="";
            if(!PageValidate.IsNumber(txtPCID.Text))
            {
                strErr+="PCID格式错误!\\n";    
            }
            if(!PageValidate.IsNumber(txtPType.Text))
            {
                strErr+="PType格式错误!\\n";    
            }
            if(this.txtPLoginName.Text.Trim().Length==0)
            {
                strErr+="PLoginName不能为空!\\n";    
            }
            if(this.txtPCName.Text.Trim().Length==0)
            {
                strErr+="PCName不能为空!\\n";    
            }
            if(this.txtPPYName.Text.Trim().Length==0)
            {
                strErr+="PPYName不能为空!\\n";    
            }
            if(this.txtPPwd.Text.Trim().Length==0)
            {
                strErr+="PPwd不能为空!\\n";    
            }
            if(this.txtPEmail.Text.Trim().Length==0)
            {
                strErr+="PEmail不能为空!\\n";    
            }
            if(this.txtPAreas.Text.Trim().Length==0)
            {
                strErr+="PAreas不能为空!\\n";    
            }
            if(!PageValidate.IsDateTime(txtPAddTime.Text))
            {
                strErr+="PAddTime格式错误!\\n";    
            }

            if(strErr!="")
            {
                MessageBox.Show(this,strErr);
                return;
            }
            int PID=int.Parse(this.lblPID.Text);
            int PCID=int.Parse(this.txtPCID.Text);
            int PType=int.Parse(this.txtPType.Text);
            string PLoginName=this.txtPLoginName.Text;
            string PCName=this.txtPCName.Text;
            string PPYName=this.txtPPYName.Text;
            string PPwd=this.txtPPwd.Text;
            bool PGender=this.chkPGender.Checked;
            string PEmail=this.txtPEmail.Text;
            string PAreas=this.txtPAreas.Text;
            bool PIsDel=this.chkPIsDel.Checked;
            DateTime PAddTime=DateTime.Parse(this.txtPAddTime.Text);


            ItcastSIM.Model.Person model=new ItcastSIM.Model.Person();
            model.PID=PID;
            model.PCID=PCID;
            model.PType=PType;
            model.PLoginName=PLoginName;
            model.PCName=PCName;
            model.PPYName=PPYName;
            model.PPwd=PPwd;
            model.PGender=PGender;
            model.PEmail=PEmail;
            model.PAreas=PAreas;
            model.PIsDel=PIsDel;
            model.PAddTime=PAddTime;

            ItcastSIM.BLL.PersonBLL bll=new ItcastSIM.BLL.PersonBLL();
            bll.Update(model);
            Maticsoft.Common.MessageBox.ShowAndRedirect(this,"保存成功!","list.aspx");

        }

       
MD5:
产生一个32位的16进制的数,可能存在相同的
将字节数组中的内容转换为16进制数
cryBuffer[i].tostring("X2");
可以破解:网站、MD5暴力破解工具

 

三层架构笔记誊录

标签:

原文地址:http://www.cnblogs.com/hetong/p/4852302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!