📄 storedbo.cs
字号:
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
namespace StoreOnline
{
// UserDetails类
public class UserDetails
{
public String UserName;
public String Email;
public String Password;
public String Name;
public String IDcardNumber;
public String TelephoneNumber;
public String Adress;
public String Zonecode;
public String Mobilephone;
public String Oicq;
public String MSN;
}
public class ProDetails
{
public decimal ProMarketPrice;
public String ProName;
public String ProPicture;
public decimal ProPrice;
public String Description;
}
public class OrderDetails
{
public DateTime OrderDate;
public decimal OrderTotalCost;
public DataSet OrderItems;
}
public class StoreDBO
{
public StoreDBO()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public UserDetails GetUserDetails(String userID)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("UserInfo", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterUserID = new SqlParameter("@UserID", SqlDbType.Int, 4);
parameterUserID.Value = Int32.Parse(userID);
myCommand.Parameters.Add(parameterUserID);
SqlParameter parameterUserName = new SqlParameter("@UserName", SqlDbType.NVarChar, 16);
//指出该参数是存储过程的OUTPUT参数
parameterUserName.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterUserName);
SqlParameter parameterPassword = new SqlParameter("@Password", SqlDbType.NVarChar, 12);
parameterPassword.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterPassword);
SqlParameter parameterName = new SqlParameter("@Name", SqlDbType.NVarChar, 10);
parameterName.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterName);
SqlParameter parameterEmail = new SqlParameter("@Email", SqlDbType.NVarChar, 50);
parameterEmail.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterEmail);
SqlParameter parameterIDCardNumber = new SqlParameter("@IDCardNumber", SqlDbType.NVarChar, 18);
parameterIDCardNumber.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterIDCardNumber);
SqlParameter parameterTelephoneNumber = new SqlParameter("@TelephoneNumber", SqlDbType.NVarChar, 12);
parameterTelephoneNumber.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterTelephoneNumber);
SqlParameter parameterAddress = new SqlParameter("@Address", SqlDbType.NVarChar, 50);
parameterAddress.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterAddress);
SqlParameter parameterZoneCode = new SqlParameter("@ZoneCode", SqlDbType.NVarChar, 10);
parameterZoneCode.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterZoneCode);
SqlParameter parameterMobilephone = new SqlParameter("@Mobilephone", SqlDbType.NVarChar, 12);
parameterMobilephone.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterMobilephone);
SqlParameter parameterOicq = new SqlParameter("@Oicq", SqlDbType.NVarChar, 20);
parameterOicq.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterOicq);
SqlParameter parameterMSN = new SqlParameter("@MSN", SqlDbType.NVarChar, 50);
parameterMSN.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterMSN);
//打开数据库连接
myConnection.Open();
//进行数据库操作
myCommand.ExecuteNonQuery();
//关闭数据库连接
myConnection.Close();
//产生UserDetails类的对象
UserDetails myUserDetails = new UserDetails();
//根据存储过程的输出参数的值对myUserDetails对象进行赋值
myUserDetails.UserName = (string)parameterUserName.Value;
myUserDetails.Password = (string)parameterPassword.Value;
myUserDetails.Name = (string)parameterName.Value;
myUserDetails.Email = (string)parameterEmail.Value;
myUserDetails.IDcardNumber = (string)parameterIDCardNumber.Value;
myUserDetails.TelephoneNumber = (string)parameterTelephoneNumber.Value;
myUserDetails.Adress =(string) parameterAddress.Value;
myUserDetails.Zonecode = (string) parameterZoneCode.Value;
myUserDetails.Mobilephone = (string) parameterMobilephone.Value;
// myUserDetails.Zonecode = (string) parameterZoneCode.Value;
myUserDetails.Oicq = (string) parameterOicq.Value;
myUserDetails.MSN = (string) parameterMSN.Value;
return myUserDetails;
}
public String UserLogin(string username, string password)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("UserLogin", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterUsername = new SqlParameter("@UserName", SqlDbType.NVarChar, 16);
parameterUsername.Value = username;
myCommand.Parameters.Add(parameterUsername);
SqlParameter parameterPassword = new SqlParameter("@Password", SqlDbType.NVarChar, 12);
parameterPassword.Value = password;
myCommand.Parameters.Add(parameterPassword);
SqlParameter parameterUserID = new SqlParameter("@UserID", SqlDbType.Int, 4);
//指出该参数是存储过程的OUTPUT参数
parameterUserID.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterUserID);
//打开数据库连接
myConnection.Open();
//进行数据库操作
myCommand.ExecuteNonQuery();
//关闭数据库连接
myConnection.Close();
//使用存储过程的输出参数返回UserID并赋值给userId
int userId = (int)(parameterUserID.Value);
//判断userId的值,如果为零则说明登录失败,函数返回空字符串,
//反之把userId转换为字符串返回。
if (userId == 0)
{
return null;
}
else
{
return userId.ToString();
}
}
public String GetShoppingCartId()
{
//获取当前ASP.NET请求的HttpContext
System.Web.HttpContext thecontext = System.Web.HttpContext.Current;
//如果用户已经通过登录认证或者注册完毕,则使用该用户的UserID作为永久购物车的ID,并返回这个ID
if (thecontext.User.Identity.Name != "")
{
return thecontext.User.Identity.Name;
}
//如果用户尚未通过认证,则要分两种情况进行处理。
//如果Cookies[Store_CartID"]不为空则获取这个cookie值作为临时购物车的ID并返回。
//反之随机产生一个新值作为临时购物车ID并返回。
if (thecontext.Request.Cookies["Store_CartID"] != null)
{
return thecontext.Request.Cookies["Store_CartID"].Value;
}
else
{
//产生一个新的随机的GUID
Guid tempShoppingCartId = Guid.NewGuid();
//把tempCartId发送到客户端,并作为一个cookie保存下来
thecontext.Response.Cookies["Store_CartID"].Value = tempShoppingCartId.ToString();
//函数返回这个tempCartId
return tempShoppingCartId.ToString();
}
}
public int CountShoppingCartItem(string cartID)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("CountShoppingCartItem", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterCartID = new SqlParameter("@CartIDString", SqlDbType.NVarChar, 50);
parameterCartID.Value = cartID;
myCommand.Parameters.Add(parameterCartID);
SqlParameter parameterItemCount = new SqlParameter("@ItemCount", SqlDbType.Int, 4);
parameterItemCount.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterItemCount);
//打开数据库连接
myConnection.Open();
//进行数据库操作
myCommand.ExecuteNonQuery();
//关闭数据库连接
myConnection.Close();
//利用存储过程的OUTPUT参数返回ItemCount,即图书的数量
return ((int)parameterItemCount.Value);
}
public SqlDataReader DisplayShoppingCart(string cartID)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("DisplayShoppingCart", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterCartID = new SqlParameter("@CartID", SqlDbType.NVarChar, 50);
parameterCartID.Value = cartID;
myCommand.Parameters.Add(parameterCartID);
//打开数据库连接
myConnection.Open();
//执行数据操作命令
//SqlDataReader读取数据到记录集后,会自动关闭数据库的连接
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
//返回DataReader的结果
return result;
}
// ShoppingCartTotalCost方法返回购物车中所有商品的价格总额
public decimal ShoppingCartTotalCost(string cartID)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("ShoppingCartTotalCost", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterCartID = new SqlParameter("@CartIDString", SqlDbType.NVarChar, 50);
parameterCartID.Value = cartID;
myCommand.Parameters.Add(parameterCartID);
SqlParameter parameterTotalCost = new SqlParameter("@TotalCost", SqlDbType.Money, 8);
parameterTotalCost.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterTotalCost);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
//返回价格总额
if (parameterTotalCost.Value.ToString() != "")
{
return (decimal)parameterTotalCost.Value;
}
else
{
return 0;
}
}
// ShoppingCartRemoveItem方法用于从购物车中删除一种商品。
public void ShoppingCartRemoveItem(string cartID, int ProID)
{
//创建数据库连接和命令的对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("RemoveShoppingCartItem", myConnection);
//指明Sql命令的操作类型是使用存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//给存储过程添加参数
SqlParameter parameterCartIDString = new SqlParameter("@CartIDString", SqlDbType.Int, 4);
parameterCartIDString.Value = cartID;
myCommand.Parameters.Add(parameterCartIDString);
SqlParameter parameterProID = new SqlParameter("@ProID", SqlDbType.NVarChar, 50);
parameterProID.Value = ProID;
myCommand.Parameters.Add(parameterProID);
//打开数据库连接
myConnection.Open();
//进行数据库操作
myCommand.ExecuteNonQuery();
//关闭数据库连接
myConnection.Close();
}
// ShoppingCartUpdate方法用于更新购物车里某件商品的购买数量
public void ShoppingCartUpdate(string cartID, int ProID, int quantity)
{
//在修改购物车里某件商品的购买数量时,如果用户输入一个负数,则该函数抛出异常
if (quantity < 0)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -