📄 storedbo.cs
字号:
throw new Exception("购买数量不能为负数");
}
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("UpdateShoppingCart", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterCartIDString = new SqlParameter("@CartIDString", SqlDbType.NVarChar, 50);
parameterCartIDString.Value = cartID;
myCommand.Parameters.Add(parameterCartIDString);
SqlParameter parameterProID = new SqlParameter("@ProID", SqlDbType.Int, 4);
parameterProID.Value = ProID;
myCommand.Parameters.Add(parameterProID);
SqlParameter parameterProQuantity = new SqlParameter("@ProQuantity", SqlDbType.Int, 4);
parameterProQuantity.Value = quantity;
myCommand.Parameters.Add(parameterProQuantity);
//打开数据库连接
myConnection.Open();
//进行数据库操作
myCommand.ExecuteNonQuery();
//关闭数据库连接
myConnection.Close();
}
public int PlaceOrder(string UserID, string cartID)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("AddOrder", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterUserID = new SqlParameter("@UserID", SqlDbType.Int, 4);
parameterUserID.Value = Int32.Parse(UserID);
myCommand.Parameters.Add(parameterUserID);
SqlParameter parameterCartID = new SqlParameter("@CartIDString", SqlDbType.NVarChar, 50);
parameterCartID.Value = cartID;
myCommand.Parameters.Add(parameterCartID);
SqlParameter parameterOrderDate = new SqlParameter("@OrderDate", SqlDbType.DateTime, 8);
parameterOrderDate.Value = DateTime.Now;
myCommand.Parameters.Add(parameterOrderDate);
SqlParameter parameterOrderID = new SqlParameter("@OrderID", SqlDbType.Int, 4);
parameterOrderID.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterOrderID);
//打开数据库连接
myConnection.Open();
//进行数据库操作
myCommand.ExecuteNonQuery();
//关闭数据库连接
myConnection.Close();
//利用存储过程的OUTPUT参数返回OrderID
return (int)parameterOrderID.Value;
}
// AddItemtoShoppingCart方法负责往购物车里面添加一个新商品
public void AddItemtoShoppingCart(string cartID, int ProID, int quantity)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("AddItemtoShoppingCart", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterProID = new SqlParameter("@ProID", SqlDbType.Int, 4);
parameterProID.Value = ProID;
myCommand.Parameters.Add(parameterProID);
SqlParameter parameterCartID = new SqlParameter("@CartIDString", SqlDbType.NVarChar, 50);
parameterCartID.Value = cartID;
myCommand.Parameters.Add(parameterCartID);
SqlParameter parameterQuantity = new SqlParameter("@ProQuantity", SqlDbType.Int, 4);
parameterQuantity.Value = quantity;
myCommand.Parameters.Add(parameterQuantity);
//打开数据库连接
myConnection.Open();
//进行数据库操作
myCommand.ExecuteNonQuery();
//关闭数据库连接
myConnection.Close();
}
// GetDetails方法返回指定商品的详细信息
public ProDetails GetProDetails(int ProID)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("ProDetail", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterProID = new SqlParameter("@ProID", SqlDbType.Int, 4);
parameterProID.Value = ProID;
myCommand.Parameters.Add(parameterProID);
SqlParameter parameterProPrice = new SqlParameter("@ProPrice", SqlDbType.Money, 8);
//指出该参数是存储过程的OUTPUT参数
parameterProPrice.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterProPrice);
SqlParameter parameterProMarketPrice = new SqlParameter("@ProMarketPrice", SqlDbType.Money,8);
parameterProMarketPrice.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterProMarketPrice);
SqlParameter parameterProName = new SqlParameter("@ProName", SqlDbType.NVarChar, 50);
parameterProName.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterProName);
SqlParameter parameterProPicture = new SqlParameter("@ProImages", SqlDbType.NVarChar, 50);
parameterProPicture.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterProPicture);
SqlParameter parameterDescription = new SqlParameter("@ProIntro", SqlDbType.NVarChar, 4000);
parameterDescription.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterDescription);
//打开数据库连接
myConnection.Open();
//进行数据库操作
myCommand.ExecuteNonQuery();
//关闭数据库连接
myConnection.Close();
//产生ProDetails类的对象
ProDetails myProDetails = new ProDetails();
//根据存储过程的输出参数的值对myProDetails对象进行赋值
myProDetails.ProMarketPrice = (decimal)parameterProMarketPrice.Value;
myProDetails.ProName = (string)parameterProName.Value;
myProDetails.ProPicture = ((string)parameterProPicture.Value).Trim();
myProDetails.ProPrice = (decimal)parameterProPrice.Value;
myProDetails.Description = ((string)parameterDescription.Value).Trim();
return myProDetails;
}
// 返回销量最好的商品
public SqlDataReader GetMostSoldProducts()
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("MostSoldProducts", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//打开数据库连接
myConnection.Open();
//执行数据操作命令
//SqlDataReader读取数据到记录集后,会自动关闭数据库的连接
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
//返回DataReader的结果
return result;
}
// 用于商品查找
public SqlDataReader SearchProDescriptions(string searchString, int catID)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("SearchPro", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterSearch = new SqlParameter("@ProName", SqlDbType.NVarChar, 255);
parameterSearch.Value = searchString;
myCommand.Parameters.Add(parameterSearch);
SqlParameter parameterCat=new SqlParameter("@CatID",SqlDbType.Int);
parameterCat.Value=catID;
myCommand.Parameters.Add(parameterCat);
//执行数据操作命令并返回结果的记录集
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
//返回DataReader的结果
return result;
}
/// <summary>
/// TransplantShoppingCart方法用于把一个购物车里面的商品转移到另一个购物车里面去。
/// 当顾客没有注册或者登录时,他在网上商店上购买的商品放在一个临时的购物车里面。
/// 在登录和注册后则需要把用户的临时购物车内的商品转移到该用户对应的永久帐号里面去。
/// TransplantShoppingCart方法就在这种情况下被调用。
/// </summary>
public void TransplantShoppingCart(String oldCartId, String newCartId)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("TransplantShoppingCart", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter cart1 = new SqlParameter("@OldCartIDString", SqlDbType.NVarChar, 50);
cart1.Value = oldCartId;
myCommand.Parameters.Add(cart1);
SqlParameter cart2 = new SqlParameter("@NewCartIDString", SqlDbType.NVarChar, 50);
cart2.Value = newCartId;
myCommand.Parameters.Add(cart2);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
// ShoppingCartEmpty方法用于清空一个购物车里面的所有商品
public void ShoppingCartEmpty(string cartID)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("EmptyShoppingCart", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter cartid = new SqlParameter("@CartIDString", SqlDbType.NVarChar, 50);
cartid.Value = cartID;
myCommand.Parameters.Add(cartid);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
public SqlDataReader GetUserOrders(String UserID)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("ListOrders", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterUserID = new SqlParameter("@UserID", SqlDbType.Int, 4);
parameterUserID.Value = Int32.Parse(UserID);
myCommand.Parameters.Add(parameterUserID);
//打开数据库连接
myConnection.Open();
//执行数据操作命令
//SqlDataReader读取数据到记录集后,会自动关闭数据库的连接
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
//返回DataReader的结果
return result;
}
public OrderDetails GetOrderDetails(int orderID, string userID)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlDataAdapter myCommand = new SqlDataAdapter("OrdersDetail", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterOrderID = new SqlParameter("@OrderID", SqlDbType.Int, 4);
parameterOrderID.Value = orderID;
myCommand.SelectCommand.Parameters.Add(parameterOrderID);
SqlParameter parameterUserID = new SqlParameter("@UserID", SqlDbType.Int, 4);
parameterUserID.Value = Int32.Parse(userID);
myCommand.SelectCommand.Parameters.Add(parameterUserID);
SqlParameter parameterOrderDate = new SqlParameter("@OrderDate", SqlDbType.DateTime, 8);
//指出该参数是存储过程的OUTPUT参数
parameterOrderDate.Direction = ParameterDirection.Output;
myCommand.SelectCommand.Parameters.Add(parameterOrderDate);
SqlParameter parameterOrderTotalCost = new SqlParameter("@OrderTotalCost", SqlDbType.Money, 8);
parameterOrderTotalCost.Direction = ParameterDirection.Output;
myCommand.SelectCommand.Parameters.Add(parameterOrderTotalCost);
//创建数据集
DataSet myDataSet = new DataSet();
//往数据集里面填充数据
myCommand.Fill(myDataSet, "OrderItems");
//创建OrderDetails类的对象
OrderDetails myOrderDetails = new OrderDetails();
//利用存储过程的参数给对象myOrderDetails赋值
myOrderDetails.OrderDate = (DateTime)parameterOrderDate.Value;
myOrderDetails.OrderTotalCost = (decimal)parameterOrderTotalCost.Value;
myOrderDetails.OrderItems = myDataSet;
//返回数据
return myOrderDetails;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -