标签:
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"); }
标签:
原文地址:http://www.cnblogs.com/hetong/p/4852302.html