La classe OrderWebService.cs
using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
namespace PetShop.Components {
public class OrderWebService{
private const string SQL_SELECT_ORDER = "SELECT OrderDate, UserId, CardType, CreditCard, ExprDate, BillToFirstName, BillToLastName, BillAddr1, BillAddr2, BillCity, BillState, BillZip, BillCountry, ShipToFirstName, ShipToLastName, ShipAddr1, ShipAddr2, ShipCity, ShipState, ShipZip, ShipCountry FROM Orders WHERE OrderId = @OrderId";
private const string SQL_SELECT_ITEM = "SELECT ItemId, LineNum, Quantity, UnitPrice FROM LineItem WHERE OrderId = @OrderId";
private const string PARM_ORDER_ID = "@OrderId";
public static Order GetOrder(int orderId) {
SqlParameter parm = new SqlParameter(PARM_ORDER_ID, SqlDbType.Int);
parm.Value = orderId;
using (SqlDataReader rdr = Database.ExecuteReader(Database.CONN_STRING2, CommandType.Text, SQL_SELECT_ORDER, parm)) {
if (rdr.Read()) {
Order order = new Order();
order.orderId = orderId;
order.date = rdr.GetDateTime(0);
order.userId = rdr.GetString(1);
order.cardType = rdr.GetString(2);
order.cardNumber = rdr.GetString(3);
order.cardExpiration = rdr.GetString(4);
order.billingAddress = new Address(rdr.GetString(5), rdr.GetString(6), rdr.GetString(7), rdr.GetString(8), rdr.GetString(9), rdr.GetString(10), rdr.GetString(11), rdr.GetString(12), null);
order.shippingAddress = new Address(rdr.GetString(13), rdr.GetString(14), rdr.GetString(15), rdr.GetString(16), rdr.GetString(17), rdr.GetString(18), rdr.GetString(19), rdr.GetString(20), null);
using(SqlDataReader rdr2 = Database.ExecuteReader(Database.CONN_STRING2, CommandType.Text, SQL_SELECT_ITEM, parm)) {
order.lineItems = new ArrayList();
LineItem item;
while (rdr2.Read()) {
item = new LineItem();
item.id = rdr2.GetString(0);
item.line = rdr2.GetInt32(1);
item.quantity = rdr2.GetInt32(2);
item.price = rdr2.GetDecimal(3);
order.lineItems.Add(item);
}
}
return order;
}
}
return null;
}
}
}