一、数据库Test,
表:








二、配置文件web.config












三、业务实体
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
5
namespace com.Model
6

{
7
/**//// <summary>
8
/// 业务实体CustomerInfo
9
/// </summary>
10
[Serializable]
11
public class CustomerInfo
12
{
13
14
/**//// <summary>
15
/// 默认的构造函数
16
/// </summary>
17
public CustomerInfo()
{}
18
19
/**//// <summary>
20
/// 有参数的构造函数
21
/// </summary>
22
/// <param name="custId">客户号</param>
23
/// <param name="custName">客户名称</param>
24
/// <param name="address">客户地址</param>
25
/// <param name="linkman">联系人</param>
26
public CustomerInfo(int custId, string custName, string address, string linkman)
27
{
28
29
this.custId = custId;
30
this.custName = custName;
31
this.address = address;
32
this.linkman = linkman;
33
}
34
private int custId;
35
public int CustId
36
{
37
get
{ return custId; }
38
set
{ custId = value; }
39
}
40
41
private string custName;
42
public string CustName
43
{
44
get
{ return custName; }
45
set
{ custName = value; }
46
}
47
48
private string address;
49
public string Address
50
{
51
get
{ return address; }
52
set
{ address = value; }
53
}
54
55
private string linkman;
56
public string Linkman
57
{
58
get
{ return linkman; }
59
set
{ linkman = value; }
60
}
61
}
62
}
63

2

3

4

5

6



7


8

9

10

11

12



13

14


15

16

17



18

19


20

21

22

23

24

25

26

27



28

29

30

31

32

33

34

35

36



37



38



39

40

41

42

43



44



45



46

47

48

49

50



51



52



53

54

55

56

57



58



59



60

61

62

63

四、数据访问层
类:SqlHelper(不多写)
类:Customer
1
using System;
2
using System.Data.SqlClient;
3
using System.Data;
4
using System.Text;
5
using System.Collections.Generic;
6
using com.Model;
7
8
namespace com.DataAccess
9

{
10
/**//// <summary>
11
/// 对客户表的所有数据访问操作
12
/// </summary>
13
public class Customer
14
{
15
16
//静态常量,参数名,T-SQL串
17
private const string SQL_SELECT_CUSTOMER_BY_ID =
18
"SELECT CustId, CustName, Address, Linkman FROM CUSTOMERS WHERE CustID = @CustId";
19
private const string SQL_SELECT_CUSTOMER_BY_NAME =
20
"SELECT CustId, CustName, Address, Linkman FROM CUSTOMERS WHERE CustName = @CustName";
21
private const string SQL_SELECT_CUSTOMER_BY_ALL =
22
"SELECT CustId, CustName, Address, Linkman FROM CUSTOMERS";
23
private const string SQL_UPDATE_CUSTOMER_BY_ID =
24
"UPDATE CUSTOMERS SET CustName=@CustName, Address=@Address, Linkman = @Linkman WHERE CustId=@CustId ";
25
private const string SQL_DELETE_CUSTOMER_BY_ID =
26
"DELETE CUSTOMERS WHERE CustId=@CustId ";
27
private const string SQL_INSERT_CUSTOMER =
28
"Declare @ID int;INSERT INTO CUSTOMERS VALUES(@CustName, @Address, @Linkman);SELECT @ID = @@IDENTITY; SELECT @ID";
29
30
private const string PARM_CUSTOMERID = "@CustId";
31
private const string PARM_CUSTOMERNAME = "@CustName";
32
private const string PARM_ADDRESS = "@Address";
33
private const string PARM_LINKMAN = "@Linkman";
34
35
/**//// <summary>
36
/// 按客户ID查询
37
/// </summary>
38
/// <param name="custId">客户号</param>
39
/// <returns>客户对象</returns>
40
public CustomerInfo GetCustomerById(int custId)
41
{
42
CustomerInfo customerInfo=null;
43
SqlParameter parm = new SqlParameter(PARM_CUSTOMERID, SqlDbType.Int);
44
parm.Value = custId;
45
46
//按客户号参数执行查询得到一个客户信息
47
using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_CUSTOMER_BY_ID, parm))
48
{
49
if (rdr.Read())
50
customerInfo = new CustomerInfo(rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3));
51
}
52
return customerInfo;
53
}
54
55
/**//// <summary>
56
/// 按客户名称查询
57
/// </summary>
58
/// <param name="custName">客户名称</param>
59
/// <returns>客户对象</returns>
60
public CustomerInfo GetCustomerByName(string custName)
61
{
62
CustomerInfo customerInfo = null;
63
SqlParameter parm = new SqlParameter(PARM_CUSTOMERNAME, SqlDbType.VarChar,20);
64
parm.Value = custName;
65
66
//按客户号参数执行查询得到一个客户信息
67
using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_CUSTOMER_BY_NAME, parm))
68
{
69
if (rdr.Read())
70
customerInfo = new CustomerInfo(rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3));
71
}
72
return customerInfo;
73
}
74
75
/**//// <summary>
76
/// 查询所有客户信息
77
/// 结果为IList
78
/// </summary>
79
/// <returns>一个客户集合</returns>
80
public IList<CustomerInfo> GetCusomersByAll()
81
{
82
83
IList<CustomerInfo> customers = new List<CustomerInfo>();
84
85
//Finally execute the query
86
using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_CUSTOMER_BY_ALL, null))
87
{
88
while (rdr.Read())
89
{
90
CustomerInfo customerInfo = new CustomerInfo(rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3));
91
customers.Add(customerInfo);
92
}
93
}
94
95
return customers;
96
}
97
/**//// <summary>
98
/// 插入一个客户信息
99
/// </summary>
100
/// <param name="customer">客户对象CustomerInfo</param>
101
/// <returns>bool类型,true or false</returns>
102
public bool InsertCustomer(CustomerInfo customerInfo)
103
{
104
SqlParameter[] paras = new SqlParameter[3];
105
paras[0]=new SqlParameter(PARM_CUSTOMERNAME,SqlDbType.VarChar,20);
106
paras[0].Value=customerInfo.CustName;
107
paras[1]=new SqlParameter(PARM_ADDRESS,SqlDbType.VarChar,50);
108
paras[1].Value=customerInfo.Address;
109
paras[2]=new SqlParameter(PARM_LINKMAN,SqlDbType.VarChar,20);
110
paras[2].Value=customerInfo.Linkman;
111
112
using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_INSERT_CUSTOMER, paras))
113
{
114
if (rdr.Read())
115
customerInfo.CustId = rdr.GetInt32(0);
116
else
117
return false;
118
}
119
return true;
120
}
121
122
/**//// <summary>
123
/// 修改一个客户信息
124
/// </summary>
125
/// <param name="customer">客户对象CustomerInfo</param>
126
/// <returns>bool类型,true or false</returns>
127
public bool UpdateCustomerByID(CustomerInfo customerInfo)
128
{
129
SqlParameter[] paras = new SqlParameter[4];
130
paras[0] = new SqlParameter(PARM_CUSTOMERNAME, SqlDbType.VarChar, 20);
131
paras[0].Value = customerInfo.CustName;
132
paras[1] = new SqlParameter(PARM_ADDRESS, SqlDbType.VarChar, 50);
133
paras[1].Value = customerInfo.Address;
134
paras[2] = new SqlParameter(PARM_LINKMAN, SqlDbType.VarChar, 20);
135
paras[2].Value = customerInfo.Linkman;
136
paras[3] = new SqlParameter(PARM_CUSTOMERID, SqlDbType.Int);
137
paras[3].Value = customerInfo.CustId;
138
139
int row = SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_UPDATE_CUSTOMER_BY_ID, paras);
140
if (row == 0)
141
return false;
142
return true;
143
}
144
145
/**//// <summary>
146
/// 按ID删除一个客户信息
147
/// </summary>
148
/// <param name="custId">客户号</param>
149
/// <returns>bool类型,true or false</returns>
150
public bool DeleteCustomerByID(int custId)
151
{
152
SqlParameter para = new SqlParameter(PARM_CUSTOMERID, SqlDbType.Int);
153
para.Value = custId;
154
155
int row = SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_DELETE_CUSTOMER_BY_ID, para);
156
if (row == 0)
157
return false;
158
return true;
159
}
160
161
}
162
}

2

3

4

5

6

7

8

9



10


11

12

13

14



15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35


36

37

38

39

40

41



42

43

44

45

46

47

48



49

50

51

52

53

54

55


56

57

58

59

60

61



62

63

64

65

66

67

68



69

70

71

72

73

74

75


76

77

78

79

80

81



82

83

84

85

86

87



88

89



90

91

92

93

94

95

96

97


98

99

100

101

102

103



104

105

106

107

108

109

110

111

112

113



114

115

116

117

118

119

120

121

122


123

124

125

126

127

128



129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145


146

147

148

149

150

151



152

153

154

155

156

157

158

159

160

161

162

五、业务逻辑层
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using com.DataAccess;
5
using com.Model;
6
using com.BusinessRule;
7
8
namespace com.BusinessLogic
9

{
10
public class CustomerLogic
11
{
12
/**//// <summary>
13
/// 插入一个客户信息
14
/// </summary>
15
/// <param name="custId">客户号</param>
16
/// <param name="custName">客户名称</param>
17
/// <param name="address">客户地址</param>
18
/// <param name="linkman">联系人</param>
19
/// <returns>bool类型,true or false</returns>
20
public bool InsertCustomer(int custId,string custName, string address, string linkman)
21
{
22
if (CustomerRule.IsExistCustomerName(custName))
23
return false;
24
Customer customer = new Customer();
25
CustomerInfo customerInfo = new CustomerInfo(custId,custName,address,linkman);
26
return customer.InsertCustomer(customerInfo);
27
}
28
29
/**//// <summary>
30
/// 插入一个客户信息
31
/// </summary>
32
/// <param name="custName">客户名称</param>
33
/// <param name="address">客户地址</param>
34
/// <param name="linkman">联系人</param>
35
/// <returns>bool类型,true or false</returns>
36
public bool InsertCustomer(string custName, string address, string linkman)
37
{
38
if (CustomerRule.IsExistCustomerName(custName))
39
return false;
40
Customer customer = new Customer();
41
CustomerInfo customerInfo = new CustomerInfo(0, custName, address, linkman);
42
return customer.InsertCustomer(customerInfo);
43
}
44
45
/**//// <summary>
46
/// 修改一个客户信息
47
/// </summary>
48
/// <param name="custId">客户号</param>
49
/// <param name="custName">客户名称</param>
50
/// <param name="address">客户地址</param>
51
/// <param name="linkman">联系人</param>
52
/// <returns>bool类型,true or false</returns>
53
public bool UpdateCustomer(int custId,string custName, string address, string linkman)
54
{
55
Customer customer = new Customer();
56
CustomerInfo customerInfo = new CustomerInfo(custId, custName, address, linkman);
57
return customer.UpdateCustomerByID(customerInfo);
58
}
59
60
/**//// <summary>
61
/// 按ID删除一个客户信息
62
/// </summary>
63
/// <param name="custId">客户号</param>
64
/// <returns>bool类型,true or false</returns>
65
public bool DeleteCustomerByID(int custId)
66
{
67
Customer customer = new Customer();
68
return customer.DeleteCustomerByID(custId);
69
}
70
71
72
/**//// <summary>
73
/// 查询所有客户信息
74
/// 结果为IList
75
/// </summary>
76
/// <returns>一个客户集合</returns>
77
public IList<CustomerInfo> GetCustomersByAll()
78
{
79
Customer customer = new Customer();
80
return customer.GetCusomersByAll();
81
}
82
}
83
}
84

2

3

4

5

6

7

8

9



10

11



12


13

14

15

16

17

18

19

20

21



22

23

24

25

26

27

28

29


30

31

32

33

34

35

36

37



38

39

40

41

42

43

44

45


46

47

48

49

50

51

52

53

54



55

56

57

58

59

60


61

62

63

64

65

66



67

68

69

70

71

72


73

74

75

76

77

78



79

80

81

82

83

84

六、业务规则层
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using com.DataAccess;
5
using com.Model;
6
7
namespace com.BusinessRule
8

{
9
/**//// <summary>
10
/// 检查客户信息的合法性
11
/// </summary>
12
public class CustomerRule
13
{
14
/**//// <summary>
15
/// 检查客户的名称是否已经存在
16
/// </summary>
17
/// <remarks>
18
/// e.g.:
19
/// bool exist =CustomerRule.IsExistCustomerName(custName);
20
/// </remarks>
21
/// <param name="custName">客户名称</param>
22
/// <returns>客户存在与否</returns>
23
24
public static bool IsExistCustomerName(string custName)
25
{
26
Customer cust = new Customer();
27
CustomerInfo custInfo = cust.GetCustomerByName(custName);
28
if (custInfo == null)
29
return false;
30
else
31
return true;
32
}
33
}
34
}
35

2

3

4

5

6

7

8



9


10

11

12

13



14


15

16

17

18

19

20

21

22

23

24

25



26

27

28

29

30

31

32

33

34

35

七、业务外观层
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Web.UI.WebControls;
5
using com.BusinessLogic;
6
using com.Model;
7
8
namespace com.BusinessFacade
9

{
10
/**//// <summary>
11
/// 为界面中Table处理数据
12
/// </summary>
13
public class CustomerTable
14
{
15
public static void SetTableData(Table table)
16
{
17
IList<CustomerInfo> list = new CustomerLogic().GetCustomersByAll();
18
19
AddRowHead(table);
20
foreach (CustomerInfo cust in list)
21
{
22
AddRow(table, cust);
23
}
24
}
25
26
private static void AddRowHead(Table table)
27
{
28
TableCell cell = new TableCell();
29
cell.Text = "Head";
30
TableRow row = new TableRow();
31
row.Cells.Add(cell);
32
table.Rows.Add(row);
33
34
}
35
private static void AddRow(Table table, CustomerInfo cust)
36
{
37
TableRow row = new TableRow();
38
TableCell cell1 = new TableCell();
39
cell1.Text = cust.CustId.ToString();
40
TableCell cell2 = new TableCell();
41
cell2.Text = cust.CustName;
42
TableCell cell3 = new TableCell();
43
cell3.Text = cust.Address;
44
TableCell cell4 = new TableCell();
45
cell4.Text = cust.Linkman;
46
row.Cells.Add(cell1);
47
row.Cells.Add(cell2);
48
row.Cells.Add(cell3);
49
row.Cells.Add(cell4);
50
51
table.Rows.Add(row);
52
}
53
}
54
}
55

2

3

4

5

6

7

8

9



10


11

12

13

14



15

16



17

18

19

20

21



22

23

24

25

26

27



28

29

30

31

32

33

34

35

36



37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

八、界面层
1
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
2
3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5
<html xmlns="http://www.w3.org/1999/xhtml" >
6
<head runat="server">
7
<title>无标题页</title>
8
</head>
9
<body>
10
<form id="form1" runat="server">
11
<div>
12
</div>
13
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
14
InsertMethod="InsertCustomer" SelectMethod="GetCustomersByAll" TypeName="com.BusinessLogic.CustomerLogic" DeleteMethod="DeleteCustomerByID" UpdateMethod="UpdateCustomer">
15
<DeleteParameters>
16
<asp:ControlParameter ControlID="FormView1" PropertyName="SelectedValue" Name="custId" Type="Int32" />
17
</DeleteParameters>
18
<UpdateParameters>
19
<asp:Parameter Name="custId" Type="Int32" />
20
<asp:Parameter Name="custName" Type="String" />
21
<asp:Parameter Name="address" Type="String" />
22
<asp:Parameter Name="linkman" Type="String" />
23
</UpdateParameters>
24
<InsertParameters>
25
<asp:Parameter Name="custName" Type="String" />
26
<asp:Parameter Name="address" Type="String" />
27
<asp:Parameter Name="linkman" Type="String" />
28
</InsertParameters>
29
</asp:ObjectDataSource>
30
<asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1" AllowPaging="True" DataKeyNames="custId">
31
<EditItemTemplate>
32
CustName:
33
<asp:TextBox ID="CustNameTextBox" runat="server" Text='<%# Bind("CustName") %>'></asp:TextBox><br />
34
Address:
35
<asp:TextBox ID="AddressTextBox" runat="server" Text='<%# Bind("Address") %>'></asp:TextBox><br />
36
Linkman:
37
<asp:TextBox ID="LinkmanTextBox" runat="server" Text='<%# Bind("Linkman") %>'></asp:TextBox><br />
38
CustId:
39
<asp:TextBox ID="CustIdTextBox" runat="server" BorderStyle="None" Enabled="False"
40
Text='<%# Bind("CustId") %>'></asp:TextBox><br />
41
<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update"
42
Text="更新"></asp:LinkButton>
43
<asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
44
Text="取消"></asp:LinkButton>
45
</EditItemTemplate>
46
<InsertItemTemplate>
47
CustName:
48
<asp:TextBox ID="CustNameTextBox" runat="server" Text='<%# Bind("CustName") %>'></asp:TextBox><br />
49
Address:
50
<asp:TextBox ID="AddressTextBox" runat="server" Text='<%# Bind("Address") %>'></asp:TextBox><br />
51
Linkman:
52
<asp:TextBox ID="LinkmanTextBox" runat="server" Text='<%# Bind("Linkman") %>'></asp:TextBox><br />
53
CustId:
54
<asp:TextBox ID="CustIdTextBox" runat="server" Text='0' Enabled="False"></asp:TextBox><br />
55
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert"
56
Text="插入"></asp:LinkButton>
57
<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
58
Text="取消"></asp:LinkButton>
59
</InsertItemTemplate>
60
<ItemTemplate>
61
CustName:
62
<asp:Label ID="CustNameLabel" runat="server" Text='<%# Bind("CustName") %>'></asp:Label><br />
63
Address:
64
<asp:Label ID="AddressLabel" runat="server" Text='<%# Bind("Address") %>'></asp:Label><br />
65
Linkman:
66
<asp:Label ID="LinkmanLabel" runat="server" Text='<%# Bind("Linkman") %>'></asp:Label><br />
67
CustId:
68
<asp:Label ID="CustIdLabel" runat="server" Enabled="False" Text='<%# Bind("CustId") %>'></asp:Label><br />
69
<asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit"
70
Text="编辑"></asp:LinkButton>
71
<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False" CommandName="Delete"
72
Text="删除" ></asp:LinkButton>
73
<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" CommandName="New"
74
Text="新建"></asp:LinkButton>
75
</ItemTemplate>
76
</asp:FormView>
77
<asp:Table ID="Table1" runat="server">
78
</asp:Table>
79
80
</form>
81
</body>
82
</html>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82
