简单的web三层架构系统【第三版】

 

今天是第三版,和前几天一样今天还是要对代码进行优化,三层架构是一种思想,具体能不能使得整个系统安全和高性能,还是要看代码编写的是否合理,逻辑性是否严谨。

 

昨天偶然间看到别人写的三层架构中,竟然没有在方法中传递单个参数,而是直接声明了一个对象整体的当传参。最后上网查,发现原来是在系统里多加了一层,叫做模型层,就是用来在系统的各层之间传递数据的,这样就避免了为一个方法传递多个参数现象。

具体深入的模型层使用还在学习当中,今天就用学到的一点简单的模型层知识,对代码进行再一次优化。

 

首相先建立一个模型层(Model)在里面创建一个实体类(person):

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace Model
 8 {
 9     public class person
10     {
11         //员工编号
12         public string id;
13 
14         public string Id
15         {
16             get { return id; }
17             set { id = value; }
18         }
19 
20         //员工姓名
21         public string name;
22 
23         public string Name
24         {
25             get { return name; }
26             set { name = value; }
27         }
28 
29         //员工性别
30         public string sex;
31 
32         public string Sex
33         {
34             get { return sex; }
35             set { sex = value; }
36         }
37 
38         //员工工资
39         public string salary;
40 
41         public string Salary
42         {
43             get { return salary; }
44             set { salary = value; }
45         }
46 
47         //构造函数,无参
48         public person()
49         {
50  
51         }
52 
53         //构造函数,传入一个参数 id
54         public person(string id)
55         {
56             this.id = id;
57         }
58 
59         //构造函数,传入三个参数 name, sex, salary
60         public person(string name, string sex, string salary)
61         {
62             this.name = name;
63 
64             this.sex = sex;
65 
66             this.salary = salary;
67         }
68 
69         //构造函数,传入四个参数 id, name, sex, salary
70         public person(string id, string name, string sex, string salary)
71         {
72             this.id = id;
73 
74             this.name = name;
75 
76             this.sex = sex;
77 
78             this.salary = salary;
79         }
80     }
81 }

 

 

然后对之前的代码进行简单的修改,在这里就不发出全部方法的更改了,其它方法类似:

 

先引入模型层(Model):

using Model;

 

default.aspx.cs代码:

 1     //更改员工信息
 2     protected void update_Click(object sender, EventArgs e)
 3     {
 4         string id = this.update_id.Text.Trim();
 5 
 6         string name = this.update_name.Text.Trim();
 7 
 8         string sex = this.update_sex.Text.Trim();
 9 
10         string salary = this.update_salary.Text.Trim();
11 
12         person p = new person(id, name, sex, salary);
13 
14         if (pd.update(p))
15         {
16             this.lbl_3.Text = " * 更改成功!";
17         }
18     }

 

personDAO类:

 1         public bool update(person p)
 2         {
 3             bool flag = false;
 4 
 5             SqlParameter[] paras = new SqlParameter[]//创建参数数组
 6             {
 7                 new SqlParameter("@id", p.id),
 8                 new SqlParameter("@name", p.name),
 9                 new SqlParameter("@sex", p.sex),
10                 new SqlParameter("@salary", p.salary)
11             };
12 
13             //使用参数数组里的值
14             string sql = "update person set [name] = @id, sex = @name, salary = @sex where id = salary";
15 
16             if (sq.ExecuteNonQuery(sql, paras) > 0)
17             {
18                 flag = true;
19             }
20 
21             return flag;
22         }

 

SQLHelper类(不改变):

 1         /// <summary>
 2         /// 执行带参数的增删改SQL语句
 3         /// </summary>
 4         /// <param name="sql">要执行的SQL语句</param>
 5         /// <param name="paras">传入的参数</param>
 6         /// <returns>返回受影响的行数</returns>
 7         public int ExecuteNonQuery(string sql, SqlParameter[] paras)
 8         {
 9             int res;
10 
11             cmd = new SqlCommand(sql, getcon());
12 
13             cmd.Parameters.AddRange(paras);
16 
17             res = cmd.ExecuteNonQuery();
18 
19             return res;
20         }

 

*实体类的使用,在小项目里效果不明显,因此有很多人说,实体类可有可无,但是真正到了大型项目里面,实体类的使用使得整个系统变得更加流畅,紧密,逻辑性也更好。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。