5.使用ADO.NET实现(三层架构篇-使用List传递数据)(1)
5.1 解决方案框架
解决方案(.sln)包含以下几个项目:
(1)类库项目HomeShop.DbUtility,数据访问实用工具;【同4.2】
(2)类库项目HomeShop.Model,实体层;【同4.3】
(3)类库项目HomeShop.DAL,数据访问层;
(4)类库项目HomeShop.BLL,业务逻辑层;
(5)WinForm项目HomeShop.WinForm,界面层。
5.2 数据访问层HomeShop.DAL
OrderDAO.cs
1
using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 // 新添命名空间
6 using System.Data;
7 using System.Data.SqlClient;
8 using HomeShop.DbUtility;
9 using HomeShop.Model;
10
11 namespace HomeShop.DAL
12 {
13 public class OrderDAO
14 {
15 protected SqlDbHelper dbHelper;
16
17 public OrderDAO()
18 {
19 this.dbHelper = new SqlDbHelper();
20 }
21
22 public OrderDAO( string connectionString)
23 {
24 this.dbHelper = new SqlDbHelper(connectionString);
25 }
26
27 // 添加
28 public int Add(Order order)
29 {
30 int rowsCountAffected = 0;
31 SqlTransaction trans = dbHelper.BeginTransaction();
32 try
33 {
34 // 新增订单基本信息,并使用SQL的系统函数@@IDENTITY获取新增订单的ID
35 string sql = @" INSERT INTO [Order]([OrderTime],
36 [OrderStateCode],
37 [CustomerName],
38 [CustomerPhoneNo],
39 [CustomerAddress])
40 VALUES(@OrderTime,
41 @OrderStateCode,
42 @CustomerName,
43 @CustomerPhoneNo,
44 @CustomerAddress)
45 SET @OrderID = @@IDENTITY ";
46 // @OrderID作为传出参数,用于获取新增订单的ID
47 SqlParameter paramOrderID = new SqlParameter( " @OrderID ", SqlDbType.Int);
48 paramOrderID.Direction = ParameterDirection.Output;
49 SqlParameter[] parameters = {
50 new SqlParameter( " @OrderTime ", order.OrderTime),
51 new SqlParameter( " @OrderStateCode ", order.OrderStateCode),
52 new SqlParameter( " @CustomerName ", order.CustomerName),
53 new SqlParameter( " @CustomerPhoneNo ", order.CustomerPhoneNo),
54 new SqlParameter( " @CustomerAddress ", order.CustomerAddress),
55 paramOrderID};
56 rowsCountAffected += dbHelper.ExecuteNonQueryTrans(trans, sql, parameters);
57 order.OrderID = ( int)paramOrderID.Value;
58 // -----------------------------------------------------------
59 // 循环添加订购商品信息
60 for ( int i = 0; i < order.OrderItems.Count; i++)
61 {
62 string sqlX = @" INSERT INTO [OrderItem]([OrderID],
63 [Product],
64 [UnitPrice],
65 [Quantity])
66 VALUES( @OrderID,
67 @Product,
68 @UnitPrice,
69 @Quantity) ";
70 SqlParameter[] parametersX = {
71 new SqlParameter( " @OrderID ", order.OrderID),
72 new SqlParameter( " @Product ", order.OrderItems[i].Product),
73 new SqlParameter( " @UnitPrice ", order.OrderItems[i].UnitPrice),
74 new SqlParameter( " @Quantity ", order.OrderItems[i].Quantity)};
75 rowsCountAffected += dbHelper.ExecuteNonQueryTrans(trans, sqlX, parametersX);
76 }
77 trans.Commit(); // 提交数据库事务
78 }
79 catch
80 {
81 trans.Rollback(); // 回滚数据库事务
82 throw;
83 }
84 dbHelper.Close();
85
86 return rowsCountAffected;
87 }
88
89 // 修改
90 public int Update(Order order)
91 {
92 int rowsCountAffected = 0;
93
94 List<SqlCmdTextAndParams> listCmdTextAndParams = new List<SqlCmdTextAndParams>();
95 // 修改订单基本信息
96 string sql = @" UPDATE [Order]
97 SET [OrderTime] = @OrderTime,
98 [OrderStateCode] = @OrderStateCode,
99 [CustomerName] = @CustomerName,
100 [CustomerPhoneNo] = @CustomerPhoneNo,
101 [CustomerAddress] = @CustomerAddress
102 WHERE [OrderID] = @OrderID ";
103 SqlParameter[] parameters = {
104 new SqlParameter( " @OrderTime ", order.OrderTime),
105 new SqlParameter( " @OrderStateCode ", order.OrderStateCode),
106 new SqlParameter( " @CustomerName ", order.CustomerName),
107 new SqlParameter( " @CustomerPhoneNo ", order.CustomerPhoneNo),
108 new SqlParameter( " @CustomerAddress ", order.CustomerAddress),
109 new SqlParameter( " @OrderID ", order.OrderID)};
110 listCmdTextAndParams.Add( new SqlCmdTextAndParams(sql, parameters));
111 // -----------------------------------------------------------
112 // 循环将订购商品信息列表同步更新到数据库中
113 // 删除
114 string predicate = " OrderID = @OrderID ";
115 SqlParameter param = new SqlParameter( " @OrderID ",order.OrderID);
116 Order originalOrder = this.GetSingle(predicate, param);
117 for( int i= 0;i<originalOrder.OrderItems.Count;i++)
118 {
119 bool exists = order.OrderItems.Exists(
120 delegate(OrderItem item){ return (item.OrderItemID == originalOrder.OrderItems[i].OrderItemID);});
121 if (exists) continue;
122
123 string sqlX = @" DELETE FROM [OrderItem]
124 WHERE [OrderItemID] = @OrderItemID ";
125 SqlParameter[] parametersX = {
126 new SqlParameter( " @OrderItemID ", originalOrder.OrderItems[i].OrderItemID)};
127 listCmdTextAndParams.Add( new SqlCmdTextAndParams(sqlX, parametersX));
128 }
129 // 新增/修改
130 OrderItemDAO orderItemDAO = new OrderItemDAO();
131 for ( int i = 0; i < order.OrderItems.Count; i++)
132 {
133 if ( 0 >= order.OrderItems[i].OrderItemID ) // 新增
134 {
135 string sqlX = @" INSERT INTO [OrderItem]([OrderID],
136 [Product],
137 [UnitPrice],
138 [Quantity])
139 VALUES( @OrderID,
140 @Product,
141 @UnitPrice,
142 @Quantity) ";
143 SqlParameter[] parametersX = {
144 new SqlParameter( " @OrderID ", order.OrderID),
145 new SqlParameter( " @Product ", order.OrderItems[i].Product),
146 new SqlParameter( " @UnitPrice ", order.OrderItems[i].UnitPrice),
147 new SqlParameter( " @Quantity ", order.OrderItems[i].Quantity)};
148 listCmdTextAndParams.Add( new SqlCmdTextAndParams(sqlX, parametersX));
149 }
150 else // 修改
151 {
152 string sqlX = @" UPDATE [OrderItem]
153 SET [OrderID] = @OrderID,
154 [Product] = @Product,
155 [UnitPrice] = @UnitPrice,
156 [Quantity] = @Quantity
157 WHERE [OrderItemID] = @OrderItemID ";
158 SqlParameter[] parametersX = {
159 new SqlParameter( " @OrderID ", order.OrderID),
160 new SqlParameter( " @Product ", order.OrderItems[i].Product),
161 new SqlParameter( " @UnitPrice ", order.OrderItems[i].UnitPrice),
162 new SqlParameter( " @Quantity ", order.OrderItems[i].Quantity),
163 new SqlParameter( " @OrderItemID ", order.OrderItems[i].OrderItemID)};
164 listCmdTextAndParams.Add( new SqlCmdTextAndParams(sqlX, parametersX));
165 }
166 }
167 rowsCountAffected = dbHelper.ExecuteNonQueryTrans(listCmdTextAndParams);
168 return rowsCountAffected;
169 }
170
171 // 删除
172 public int Delete(Order order)
173 {
174 string sql = @" DELETE FROM [OrderItem]
175 WHERE [OrderID] = @OrderID
176
177 DELETE FROM [Order]
178 WHERE [OrderID] = @OrderID ";
179 return dbHelper.ExecuteNonQueryTrans(sql, new SqlParameter( " @OrderID ", order.OrderID));
180 }
181
182 // 获取实体对象列表
183 public List<Order> GetList( string predicate, params SqlParameter[] parameters)
184 {
185 List<Order> list = new List<Order>();
186 DataTable table = GetTable(predicate, parameters);
187 for ( int i = 0; i < table.Rows.Count; i++)
188 {
189 list.Add(RowToModel(table.Rows[i]));
190 }
191 return list;
192 }
193
194 // 获取单一实体对象
195 public Order GetSingle( string predicate, params SqlParameter[] parameters)
196 {
197 List<Order> list = GetList(predicate, parameters);
198 if (list.Count == 1)
199 return list[ 0];
200 else if (list.Count == 0)
201 return null;
202 else
203 {
204 Exception ex = new Exception( " 满足条件的实体多于1个。 ");
205 throw ex;
206 }
207 }
208
209 // 获取DataTable
210 private DataTable GetTable( string predicate, params SqlParameter[] parameters)
211 {
212 string sql = @" SELECT [OrderID],
213 [CustomerName],
214 [CustomerPhoneNo],
215 [CustomerAddress],
216 [OrderTime],
217 [OrderStateCode],
218 [OrderState].[Name] AS [OrderState]
219 FROM [Order]
220 LEFT OUTER JOIN [OrderState]
221 ON [Order].[OrderStateCode] = [OrderState].[Code] ";
222 if ( null != predicate && "" != predicate.Trim())
223 {
224 sql += " WHERE " + predicate;
225 }
226 sql += " ORDER BY [OrderID] DESC ";
227 return dbHelper.ExecuteQuery(sql, parameters);
228 }
229
230 // 将DataRow转换为实体对象
231 private Order RowToModel(DataRow row)
232 {
233 // ----父表----
234 Order order = new Order();
235 order.OrderID = ( int)row[ " OrderID "];
236 order.CustomerName = row[ " CustomerName "].ToString();
237 order.CustomerPhoneNo = row[ " CustomerPhoneNo "].ToString();
238 order.CustomerAddress = row[ " CustomerAddress "].ToString();
239 order.OrderTime = Convert.ToDateTime(row[ " OrderTime "]);
240 order.OrderStateCode = row[ " OrderStateCode "].ToString();
241 // ----子表----
242 OrderItemDAO orderItemDAO = new OrderItemDAO();
243 order.OrderItems = orderItemDAO.GetList( " OrderID = @OrderID ",
244 new SqlParameter( " @OrderID ", order.OrderID));
245
246 return order;
247 }
248
249 }
250 }
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 // 新添命名空间
6 using System.Data;
7 using System.Data.SqlClient;
8 using HomeShop.DbUtility;
9 using HomeShop.Model;
10
11 namespace HomeShop.DAL
12 {
13 public class OrderDAO
14 {
15 protected SqlDbHelper dbHelper;
16
17 public OrderDAO()
18 {
19 this.dbHelper = new SqlDbHelper();
20 }
21
22 public OrderDAO( string connectionString)
23 {
24 this.dbHelper = new SqlDbHelper(connectionString);
25 }
26
27 // 添加
28 public int Add(Order order)
29 {
30 int rowsCountAffected = 0;
31 SqlTransaction trans = dbHelper.BeginTransaction();
32 try
33 {
34 // 新增订单基本信息,并使用SQL的系统函数@@IDENTITY获取新增订单的ID
35 string sql = @" INSERT INTO [Order]([OrderTime],
36 [OrderStateCode],
37 [CustomerName],
38 [CustomerPhoneNo],
39 [CustomerAddress])
40 VALUES(@OrderTime,
41 @OrderStateCode,
42 @CustomerName,
43 @CustomerPhoneNo,
44 @CustomerAddress)
45 SET @OrderID = @@IDENTITY ";
46 // @OrderID作为传出参数,用于获取新增订单的ID
47 SqlParameter paramOrderID = new SqlParameter( " @OrderID ", SqlDbType.Int);
48 paramOrderID.Direction = ParameterDirection.Output;
49 SqlParameter[] parameters = {
50 new SqlParameter( " @OrderTime ", order.OrderTime),
51 new SqlParameter( " @OrderStateCode ", order.OrderStateCode),
52 new SqlParameter( " @CustomerName ", order.CustomerName),
53 new SqlParameter( " @CustomerPhoneNo ", order.CustomerPhoneNo),
54 new SqlParameter( " @CustomerAddress ", order.CustomerAddress),
55 paramOrderID};
56 rowsCountAffected += dbHelper.ExecuteNonQueryTrans(trans, sql, parameters);
57 order.OrderID = ( int)paramOrderID.Value;
58 // -----------------------------------------------------------
59 // 循环添加订购商品信息
60 for ( int i = 0; i < order.OrderItems.Count; i++)
61 {
62 string sqlX = @" INSERT INTO [OrderItem]([OrderID],
63 [Product],
64 [UnitPrice],
65 [Quantity])
66 VALUES( @OrderID,
67 @Product,
68 @UnitPrice,
69 @Quantity) ";
70 SqlParameter[] parametersX = {
71 new SqlParameter( " @OrderID ", order.OrderID),
72 new SqlParameter( " @Product ", order.OrderItems[i].Product),
73 new SqlParameter( " @UnitPrice ", order.OrderItems[i].UnitPrice),
74 new SqlParameter( " @Quantity ", order.OrderItems[i].Quantity)};
75 rowsCountAffected += dbHelper.ExecuteNonQueryTrans(trans, sqlX, parametersX);
76 }
77 trans.Commit(); // 提交数据库事务
78 }
79 catch
80 {
81 trans.Rollback(); // 回滚数据库事务
82 throw;
83 }
84 dbHelper.Close();
85
86 return rowsCountAffected;
87 }
88
89 // 修改
90 public int Update(Order order)
91 {
92 int rowsCountAffected = 0;
93
94 List<SqlCmdTextAndParams> listCmdTextAndParams = new List<SqlCmdTextAndParams>();
95 // 修改订单基本信息
96 string sql = @" UPDATE [Order]
97 SET [OrderTime] = @OrderTime,
98 [OrderStateCode] = @OrderStateCode,
99 [CustomerName] = @CustomerName,
100 [CustomerPhoneNo] = @CustomerPhoneNo,
101 [CustomerAddress] = @CustomerAddress
102 WHERE [OrderID] = @OrderID ";
103 SqlParameter[] parameters = {
104 new SqlParameter( " @OrderTime ", order.OrderTime),
105 new SqlParameter( " @OrderStateCode ", order.OrderStateCode),
106 new SqlParameter( " @CustomerName ", order.CustomerName),
107 new SqlParameter( " @CustomerPhoneNo ", order.CustomerPhoneNo),
108 new SqlParameter( " @CustomerAddress ", order.CustomerAddress),
109 new SqlParameter( " @OrderID ", order.OrderID)};
110 listCmdTextAndParams.Add( new SqlCmdTextAndParams(sql, parameters));
111 // -----------------------------------------------------------
112 // 循环将订购商品信息列表同步更新到数据库中
113 // 删除
114 string predicate = " OrderID = @OrderID ";
115 SqlParameter param = new SqlParameter( " @OrderID ",order.OrderID);
116 Order originalOrder = this.GetSingle(predicate, param);
117 for( int i= 0;i<originalOrder.OrderItems.Count;i++)
118 {
119 bool exists = order.OrderItems.Exists(
120 delegate(OrderItem item){ return (item.OrderItemID == originalOrder.OrderItems[i].OrderItemID);});
121 if (exists) continue;
122
123 string sqlX = @" DELETE FROM [OrderItem]
124 WHERE [OrderItemID] = @OrderItemID ";
125 SqlParameter[] parametersX = {
126 new SqlParameter( " @OrderItemID ", originalOrder.OrderItems[i].OrderItemID)};
127 listCmdTextAndParams.Add( new SqlCmdTextAndParams(sqlX, parametersX));
128 }
129 // 新增/修改
130 OrderItemDAO orderItemDAO = new OrderItemDAO();
131 for ( int i = 0; i < order.OrderItems.Count; i++)
132 {
133 if ( 0 >= order.OrderItems[i].OrderItemID ) // 新增
134 {
135 string sqlX = @" INSERT INTO [OrderItem]([OrderID],
136 [Product],
137 [UnitPrice],
138 [Quantity])
139 VALUES( @OrderID,
140 @Product,
141 @UnitPrice,
142 @Quantity) ";
143 SqlParameter[] parametersX = {
144 new SqlParameter( " @OrderID ", order.OrderID),
145 new SqlParameter( " @Product ", order.OrderItems[i].Product),
146 new SqlParameter( " @UnitPrice ", order.OrderItems[i].UnitPrice),
147 new SqlParameter( " @Quantity ", order.OrderItems[i].Quantity)};
148 listCmdTextAndParams.Add( new SqlCmdTextAndParams(sqlX, parametersX));
149 }
150 else // 修改
151 {
152 string sqlX = @" UPDATE [OrderItem]
153 SET [OrderID] = @OrderID,
154 [Product] = @Product,
155 [UnitPrice] = @UnitPrice,
156 [Quantity] = @Quantity
157 WHERE [OrderItemID] = @OrderItemID ";
158 SqlParameter[] parametersX = {
159 new SqlParameter( " @OrderID ", order.OrderID),
160 new SqlParameter( " @Product ", order.OrderItems[i].Product),
161 new SqlParameter( " @UnitPrice ", order.OrderItems[i].UnitPrice),
162 new SqlParameter( " @Quantity ", order.OrderItems[i].Quantity),
163 new SqlParameter( " @OrderItemID ", order.OrderItems[i].OrderItemID)};
164 listCmdTextAndParams.Add( new SqlCmdTextAndParams(sqlX, parametersX));
165 }
166 }
167 rowsCountAffected = dbHelper.ExecuteNonQueryTrans(listCmdTextAndParams);
168 return rowsCountAffected;
169 }
170
171 // 删除
172 public int Delete(Order order)
173 {
174 string sql = @" DELETE FROM [OrderItem]
175 WHERE [OrderID] = @OrderID
176
177 DELETE FROM [Order]
178 WHERE [OrderID] = @OrderID ";
179 return dbHelper.ExecuteNonQueryTrans(sql, new SqlParameter( " @OrderID ", order.OrderID));
180 }
181
182 // 获取实体对象列表
183 public List<Order> GetList( string predicate, params SqlParameter[] parameters)
184 {
185 List<Order> list = new List<Order>();
186 DataTable table = GetTable(predicate, parameters);
187 for ( int i = 0; i < table.Rows.Count; i++)
188 {
189 list.Add(RowToModel(table.Rows[i]));
190 }
191 return list;
192 }
193
194 // 获取单一实体对象
195 public Order GetSingle( string predicate, params SqlParameter[] parameters)
196 {
197 List<Order> list = GetList(predicate, parameters);
198 if (list.Count == 1)
199 return list[ 0];
200 else if (list.Count == 0)
201 return null;
202 else
203 {
204 Exception ex = new Exception( " 满足条件的实体多于1个。 ");
205 throw ex;
206 }
207 }
208
209 // 获取DataTable
210 private DataTable GetTable( string predicate, params SqlParameter[] parameters)
211 {
212 string sql = @" SELECT [OrderID],
213 [CustomerName],
214 [CustomerPhoneNo],
215 [CustomerAddress],
216 [OrderTime],
217 [OrderStateCode],
218 [OrderState].[Name] AS [OrderState]
219 FROM [Order]
220 LEFT OUTER JOIN [OrderState]
221 ON [Order].[OrderStateCode] = [OrderState].[Code] ";
222 if ( null != predicate && "" != predicate.Trim())
223 {
224 sql += " WHERE " + predicate;
225 }
226 sql += " ORDER BY [OrderID] DESC ";
227 return dbHelper.ExecuteQuery(sql, parameters);
228 }
229
230 // 将DataRow转换为实体对象
231 private Order RowToModel(DataRow row)
232 {
233 // ----父表----
234 Order order = new Order();
235 order.OrderID = ( int)row[ " OrderID "];
236 order.CustomerName = row[ " CustomerName "].ToString();
237 order.CustomerPhoneNo = row[ " CustomerPhoneNo "].ToString();
238 order.CustomerAddress = row[ " CustomerAddress "].ToString();
239 order.OrderTime = Convert.ToDateTime(row[ " OrderTime "]);
240 order.OrderStateCode = row[ " OrderStateCode "].ToString();
241 // ----子表----
242 OrderItemDAO orderItemDAO = new OrderItemDAO();
243 order.OrderItems = orderItemDAO.GetList( " OrderID = @OrderID ",
244 new SqlParameter( " @OrderID ", order.OrderID));
245
246 return order;
247 }
248
249 }
250 }
OrderItemDAO.cs
1
using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 // 新添命名空间
6 using System.Data;
7 using System.Data.SqlClient;
8 using HomeShop.DbUtility;
9 using HomeShop.Model;
10
11 namespace HomeShop.DAL
12 {
13 public class OrderItemDAO
14 {
15 private SqlDbHelper dbHelper;
16
17 public OrderItemDAO()
18 {
19 this.dbHelper = new SqlDbHelper();
20 }
21
22 public OrderItemDAO( string connectionString)
23 {
24 this.dbHelper = new SqlDbHelper(connectionString);
25 }
26
27 // 获取实体对象列表
28 public List<OrderItem> GetList( string predicate, params SqlParameter[] parameters)
29 {
30 List<OrderItem> list = new List<OrderItem>();
31 DataTable dataTable = GetTable(predicate, parameters);
32 for ( int i = 0; i < dataTable.Rows.Count; i++)
33 {
34 list.Add(RowToModel(dataTable.Rows[i]));
35 }
36
37 return list;
38 }
39
40 // 获取DataTable
41 private DataTable GetTable( string predicate, params SqlParameter[] parameters)
42 {
43 string sql = @" SELECT [OrderItemID],
44 [OrderID],
45 [Product],
46 [UnitPrice],
47 [Quantity],
48 [UnitPrice]*[Quantity] AS SubTotal
49 FROM [OrderItem] ";
50 if ( null != predicate && "" != predicate.Trim())
51 {
52 sql += " WHERE " + predicate;
53 }
54 return dbHelper.ExecuteQuery(sql, parameters);
55 }
56
57 // 将DataRow转换为实体对象
58 private OrderItem RowToModel(DataRow row)
59 {
60 OrderItem orderItem = new OrderItem();
61 orderItem.OrderID = ( int)row[ " OrderID "];
62 orderItem.OrderItemID = ( int)row[ " OrderItemID "];
63 orderItem.Product = row[ " Product "].ToString();
64 orderItem.Quantity = ( int)row[ " Quantity "];
65 orderItem.UnitPrice = ( decimal)row[ " UnitPrice "];
66
67 return orderItem;
68 }
69 }
70 }
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 // 新添命名空间
6 using System.Data;
7 using System.Data.SqlClient;
8 using HomeShop.DbUtility;
9 using HomeShop.Model;
10
11 namespace HomeShop.DAL
12 {
13 public class OrderItemDAO
14 {
15 private SqlDbHelper dbHelper;
16
17 public OrderItemDAO()
18 {
19 this.dbHelper = new SqlDbHelper();
20 }
21
22 public OrderItemDAO( string connectionString)
23 {
24 this.dbHelper = new SqlDbHelper(connectionString);
25 }
26
27 // 获取实体对象列表
28 public List<OrderItem> GetList( string predicate, params SqlParameter[] parameters)
29 {
30 List<OrderItem> list = new List<OrderItem>();
31 DataTable dataTable = GetTable(predicate, parameters);
32 for ( int i = 0; i < dataTable.Rows.Count; i++)
33 {
34 list.Add(RowToModel(dataTable.Rows[i]));
35 }
36
37 return list;
38 }
39
40 // 获取DataTable
41 private DataTable GetTable( string predicate, params SqlParameter[] parameters)
42 {
43 string sql = @" SELECT [OrderItemID],
44 [OrderID],
45 [Product],
46 [UnitPrice],
47 [Quantity],
48 [UnitPrice]*[Quantity] AS SubTotal
49 FROM [OrderItem] ";
50 if ( null != predicate && "" != predicate.Trim())
51 {
52 sql += " WHERE " + predicate;
53 }
54 return dbHelper.ExecuteQuery(sql, parameters);
55 }
56
57 // 将DataRow转换为实体对象
58 private OrderItem RowToModel(DataRow row)
59 {
60 OrderItem orderItem = new OrderItem();
61 orderItem.OrderID = ( int)row[ " OrderID "];
62 orderItem.OrderItemID = ( int)row[ " OrderItemID "];
63 orderItem.Product = row[ " Product "].ToString();
64 orderItem.Quantity = ( int)row[ " Quantity "];
65 orderItem.UnitPrice = ( decimal)row[ " UnitPrice "];
66
67 return orderItem;
68 }
69 }
70 }
OrderStateDAO.cs
1
using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 // 新添命名空间
6 using System.Data;
7 using System.Data.SqlClient;
8 using HomeShop.DbUtility;
9 using HomeShop.Model;
10
11 namespace HomeShop.DAL
12 {
13 public class OrderStateDAO
14 {
15 private SqlDbHelper dbHelper;
16
17 public OrderStateDAO()
18 {
19 this.dbHelper = new SqlDbHelper();
20 }
21
22 public OrderStateDAO( string connectionString)
23 {
24 this.dbHelper = new SqlDbHelper(connectionString);
25 }
26
27 // 获取实体对象列表
28 public List<OrderState> GetList( string predicate, params SqlParameter[] parameters)
29 {
30 List<OrderState> list = new List<OrderState>();
31 DataTable dataTable = GetTable(predicate, parameters);
32 for ( int i = 0; i < dataTable.Rows.Count; i++)
33 {
34 list.Add(RowToModel(dataTable.Rows[i]));
35 }
36
37 return list;
38 }
39
40 // 获取DataTable
41 private DataTable GetTable( string predicate, params SqlParameter[] parameters)
42 {
43 string sql = @" SELECT * FROM [OrderState] ";
44 if ( null != predicate && "" != predicate.Trim())
45 {
46 sql += " WHERE " + predicate;
47 }
48 sql += " ORDER BY [Code] ";
49 return dbHelper.ExecuteQuery(sql, parameters);
50 }
51
52 // 将DataRow转换为实体对象
53 private OrderState RowToModel(DataRow row)
54 {
55 OrderState orderState = new OrderState();
56 orderState.Code = row[ " Code "].ToString();
57 orderState.Name = row[ " Name "].ToString();
58 return orderState;
59 }
60 }
61 }
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 // 新添命名空间
6 using System.Data;
7 using System.Data.SqlClient;
8 using HomeShop.DbUtility;
9 using HomeShop.Model;
10
11 namespace HomeShop.DAL
12 {
13 public class OrderStateDAO
14 {
15 private SqlDbHelper dbHelper;
16
17 public OrderStateDAO()
18 {
19 this.dbHelper = new SqlDbHelper();
20 }
21
22 public OrderStateDAO( string connectionString)
23 {
24 this.dbHelper = new SqlDbHelper(connectionString);
25 }
26
27 // 获取实体对象列表
28 public List<OrderState> GetList( string predicate, params SqlParameter[] parameters)
29 {
30 List<OrderState> list = new List<OrderState>();
31 DataTable dataTable = GetTable(predicate, parameters);
32 for ( int i = 0; i < dataTable.Rows.Count; i++)
33 {
34 list.Add(RowToModel(dataTable.Rows[i]));
35 }
36
37 return list;
38 }
39
40 // 获取DataTable
41 private DataTable GetTable( string predicate, params SqlParameter[] parameters)
42 {
43 string sql = @" SELECT * FROM [OrderState] ";
44 if ( null != predicate && "" != predicate.Trim())
45 {
46 sql += " WHERE " + predicate;
47 }
48 sql += " ORDER BY [Code] ";
49 return dbHelper.ExecuteQuery(sql, parameters);
50 }
51
52 // 将DataRow转换为实体对象
53 private OrderState RowToModel(DataRow row)
54 {
55 OrderState orderState = new OrderState();
56 orderState.Code = row[ " Code "].ToString();
57 orderState.Name = row[ " Name "].ToString();
58 return orderState;
59 }
60 }
61 }
数据库文件:/Files/SummerRain/NetDbDevRoad/HomeShopDB.rar
完整源代码:/Files/SummerRain/NetDbDevRoad/5使用ADONET实现三层架构List.rar