三层架构笔记誊录

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 [email protected]";
                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暴力破解工具

 

时间: 2024-08-10 21:21:49

三层架构笔记誊录的相关文章

ASP.NET笔记誊录

元数据:代码中二进制级别达到重用,包括IL代码,类的属性,字段方法,程序集,资源等各种数据 VS中的的代码智能提示就是反射元数据来获取的,是这个.net中代码中灵魂 sqlconnection连接池(list集合,放在内存中):保存内连接对象 内连接对象跟连接字符串相关,当sqlconnection conn=new sqlconnection(strConn1) 就会创建一个内连接对象,此时会根据对象的连接的字符串去sqlconnection连接池中查看是否有该对象,如果有则取出来用.没有则创

C#笔记誊录

1.继承 面向对象的三大特征: 封装性 继承性  多态性 一.继承:类与类的关系 为什么会用继承:减少代码重复 优化 空间内存 实现多态  class 基类 { //基类成员 } class 子类:基类 { //子类成员 } 判断继承关系 用进行进行判断-->子类对象 is 父类成员 例如 诺基亚手机  诺基亚280  诺基亚板砖007 继承特征 :1.单根性  一个只能继承自一个类 不可能继承俩个类                  2.传递性   爷爷 父亲 孙子              

JavaScript Dom 笔记誊录

DOM:文档对象模型 Dhtml:javascript+css+html(dom) 为什么要使用Dom: 1.HTML页面动态化 2.提升用户交互型 2. 1.document.getEelmentById 可以通过对象的id属性来获取该元素对象 2.document.getElementsByTagName 可以通过元素的标签名得到一组元素对象的数组 3.document.getElementsByName 根据元素的name属性来获得该一组对象的数组,一般节点都具有name属性 docume

SQL SEVER 笔记誊录

数据库: sqlcmd -S .\sqlespress //链接免费的数据库实例 sqlcmd -S YKTHHAP1RIWNZ4L\SQLHJS//链接到本地的数据库实例(机器名\实例名) 1>//登录成功! net start mssql$sqlexpress启动服务 quit/exit退出数据库的链接 char(10):ASIIC码10个字节:一个汉字占2个字节,只能放5个汉字,可以放是10个英文.数字 固定长度,没有的补空格 nchar(10):Unicode码,10个字符:10个汉字

JQuer笔记誊录

jQuery=$ 2者相等 $是顶级的对象,就像dom中的window jQuery中最常用的对象即$对象,要想使用jQuery的方法必须通过$对象.只有将普通的Dom对象封装成jQuery对象,然后才能调用jQuery中的各种方法. $是jQuery简写,在代码中可以使用jQuery代替$,但一般为了方便大家都直接使用$. 通过js实现的页面加载完毕的执行代码的方式与JQuery的区别: 需求:页面加载完毕后弹出"加载完毕!". 通过window.onload实现. 通过jQuery

JavaScript笔记誊录

js:一种脚本语言.客户端语言 1.代码都写在<script></script>标签中 2.外部引用<script type="text/javascript" src=""></script> 变量命名规则 -> 严格区分大小写 ->与C#类似,多一个,可以使用$开头 大小写敏感,弱类型var -> 注释    // 与 /**/    (<!--  -->) -> 需要写JS,代

ASP.NET MVC笔记誊录

非托管代码:像由c++写的程序直接把二进制代码交给操作系统的内核来处理,叫做非托管代码 托管代码:运行在CLR下面的代码叫托管代码,由CLR来对代码进行异常等处理,编译成平台代码 匿名函数: public delegate int AddDel(int a,int b); 简单委托: AddDel delDemo=new AddDel(AddInt) public int AddInt(int a,int b) { return a+b; } 泛型委托,一般用于约束返回值和传入的参数 publi

HTML笔记誊录

www.w3school.com.cn网站 ctrl+k+d 页面源码对齐 注释不允许嵌套 <!--你好--> <!--你还 nihao nihao nihao --> <!--你还 nihao nihao <!-- nihao --> nihao --> //注释不允许嵌套 /* 注释的内容 */ 字体分为逻辑字体和物理字体 推荐使用逻辑字体(效率较高) <(<) >(>)  (空格) <font size="7&q

C#笔记誊录&lt;二&gt;

c#编译器把源码编译成IL(中间)代码,再由CLR通过即时编译器把IL代码编译成本机机器语言(平台语言) www.webkaka.com//测试服务器的网速 ctrl+k+d 代码对其 CTRL+K+S #REGION代码折叠 ctrl+r+e 连敲2个回车:封装字段 shift+alt+f10:实现接口 XML序列化:把对象写到XML文档中 标识某个对象的某个字段不能被序列化,只要把[XmlIgnoreAttribute]放在某个字段前面 二进制流序列化:把对象序列化成二进制流进行网络传输 标