⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlbookshopprofileprovider.cs

📁 一个非常好的网上书店系统
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Text;

/// <summary>
/// 为配置提供操作类
/// </summary>
public class SqlBookShopProfileProvider
{
	public SqlBookShopProfileProvider()	{	}
	// 匿名用户变量
	private const int AUTH_ANONYMOUS = 0;
	// 身份验证变量
	private const int AUTH_AUTHENTICATED = 1;
	// 验证设置
	private const int AUTH_ALL = 2;

    /// <summary>
    /// 获取当前用户的帐户信息
    /// </summary>
    /// <param name="userName">用户名</param>
    /// <param name="appName">应用程序名</param>
    /// <returns>帐户信息</returns>
    public AddressInfo GetAccountInfo(string userName, string appName)
    {
        //SQL选择语句
        string sqlSelect = "SELECT Account.Mail, Account.UserName, Account.Address,  Account.Code, Account.Country, Account.Phone FROM Account INNER JOIN Profiles ON Account.ProfileID = Profiles.ProfileID WHERE Profiles.Username = @Username AND Profiles.ApplicationName = @ApplicationName;";
        SqlParameter[] parms = {					   
            new SqlParameter("@Username", SqlDbType.VarChar, 256),
            new SqlParameter("@ApplicationName", SqlDbType.VarChar, 256)};
        parms[0].Value = userName;
        parms[1].Value = appName;

        AddressInfo addressInfo = null;

        SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlSelect, parms);
        while (dr.Read())
        {
            addressInfo = new AddressInfo(dr.GetString(1), dr.GetString(2), dr.GetString(3), dr.GetString(4), dr.GetString(5),dr.GetString(0));
        }
        dr.Close();

        return addressInfo;
    }

    /// <summary>
    ///更新当前用户的帐户地址
    /// </summary>
    /// <param name="uniqueID">配置ID</param>
    /// <param name="addressInfo">当前用户帐户地址信息</param>   
    public void SetAccountInfo(int uniqueID, AddressInfo addressInfo)
    {
        string sqlDelete = "DELETE FROM Account WHERE ProfileID = @UniqueID;";
        SqlParameter param = new SqlParameter("@UniqueID", SqlDbType.Int);
        param.Value = uniqueID;

        string sqlInsert = "INSERT INTO Account (ProfileID, Mail, UserName, Address, Code, Country, Phone) VALUES (@UniqueID, @Email, @UserName,@Address, @Code, @Country, @Phone);";

        //初始化参数数组并赋值
        SqlParameter[] parms = {					   
        new SqlParameter("@UniqueID", SqlDbType.Int),
        new SqlParameter("@Email", SqlDbType.VarChar, 80),
        new SqlParameter("@UserName", SqlDbType.VarChar, 80),
        new SqlParameter("@Address", SqlDbType.VarChar, 80),
        new SqlParameter("@Code", SqlDbType.VarChar, 80),
        new SqlParameter("@Country", SqlDbType.VarChar, 80),
        new SqlParameter("@Phone", SqlDbType.VarChar, 80)};

        parms[0].Value = uniqueID;
        parms[1].Value = addressInfo.Email;
        parms[2].Value = addressInfo.UserName;
        parms[3].Value = addressInfo.Address;
        parms[4].Value = addressInfo.ZipCode;
        parms[5].Value = addressInfo.Country;
        parms[6].Value = addressInfo.Phone;

        SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction);
        conn.Open();
        //开始事务
        SqlTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
        try
        {
            SqlHelper.ExecuteNonQuery(trans, CommandType.Text, sqlDelete, param);
            SqlHelper.ExecuteNonQuery(trans, CommandType.Text, sqlInsert, parms);
            //执行事务
            trans.Commit();
        }
        catch (Exception e)
        {
            //出现错误,回滚事务
            trans.Rollback();
            throw new ApplicationException(e.Message);
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// 获取购物篮信息
    /// </summary>
    /// <param name="userName">用户名</param>
    /// <param name="appName">应用程序名</param>
    /// <param name="isShoppingCart">购物篮标志</param>
    /// <returns>购物篮中数据</returns>
	public IList<CartItemInfo> GetCartItems(string userName, string appName, bool isShoppingCart) {
        string sqlSelect = "SELECT Cart.ItemId, Cart.ProductName,  Cart.Price, Cart.ProductId, Cart.Quantity FROM Profiles INNER JOIN Cart ON Profiles.ProfileID = Cart.ProfileID WHERE Profiles.Username = @Username AND Profiles.ApplicationName = @ApplicationName ;";

        //创建参数并赋值
		SqlParameter[] parms = {						   
			new SqlParameter("@Username", SqlDbType.VarChar, 256),
			new SqlParameter("@ApplicationName", SqlDbType.VarChar, 256),
			new SqlParameter("@IsShoppingCart", SqlDbType.Bit)};
		parms[0].Value = userName;
		parms[1].Value = appName;
		parms[2].Value = isShoppingCart;

        //执行选择操作
        SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlSelect, parms);
		IList<CartItemInfo> cartItems = new List<CartItemInfo>();
		while(dr.Read()) {
			CartItemInfo cartItem = new CartItemInfo(dr.GetInt32(0), dr.GetString(1), dr.GetInt32(4), dr.GetDecimal(2), 0, dr.GetInt32(3));
			cartItems.Add(cartItem);
		}
		dr.Close();
		return cartItems;  
	}

    /// <summary>
    /// 更新当前用户的购物篮
    /// </summary>
    /// <param name="uniqueID">配置ID</param>
    /// <param name="cartItems">购物篮数据集合</param>
    /// <param name="isShoppingCart">购物篮标志/param>
	public void SetCartItems(int uniqueID, ICollection<CartItemInfo> cartItems, bool isShoppingCart) {
        string sqlDelete = "DELETE FROM Cart WHERE ProfileID = @ProfileID ;";
		SqlParameter parms1 = 	new SqlParameter("@ProfileID", SqlDbType.Int);
		parms1.Value = uniqueID;
        if (cartItems.Count > 0) {

            // 使用事务更新数据
            string sqlInsert = "INSERT INTO Cart (ProfileID, ItemId, ProductName,  Price,  ProductId, Quantity) VALUES (@ProfileID, @ItemId, @Name,  @Price,  @ProductId,  @Quantity);";

            //创建参数列表
            SqlParameter[] parms2 = {				   
			new SqlParameter("@ProfileID", SqlDbType.Int),	
			new SqlParameter("@ItemId", SqlDbType.VarChar, 10),
			new SqlParameter("@Name", SqlDbType.VarChar, 80),
			new SqlParameter("@Price", SqlDbType.Decimal, 8),
			new SqlParameter("@ProductId", SqlDbType.VarChar, 10),
			new SqlParameter("@Quantity", SqlDbType.Int)};
            parms2[0].Value = uniqueID;
            SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction);
            conn.Open();
            //开始事务
            SqlTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
            try {
                SqlHelper.ExecuteNonQuery(trans, CommandType.Text, sqlDelete, parms1);

                //将购物篮内容添加到表中
                foreach (CartItemInfo cartItem in cartItems) {
                    parms2[1].Value = cartItem.ItemId;
                    parms2[2].Value = cartItem.Name;
                    parms2[3].Value = cartItem.Price;
                    parms2[4].Value = cartItem.ProductId;
                    parms2[5].Value = cartItem.Quantity;
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, sqlInsert, parms2);
                }
                //执行事务
                trans.Commit();
            }
            catch (Exception e) {
                //事务回滚
                trans.Rollback();
                throw new ApplicationException(e.Message);
            }
            finally {
                conn.Close();
            }
        }
        else 
            // 删除购物篮商品
            SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlDelete, parms1);
	}

    /// <summary>
    /// 更新当前用户的激活日期
    /// </summary>
    /// <param name="userName">用户名</param>
    /// <param name="activityOnly">激活标志</param>
    /// <param name="appName">应用程序名</param>
	public void UpdateActivityDates(string userName, bool activityOnly, string appName) {
		DateTime activityDate = DateTime.Now;
		string sqlUpdate;
		SqlParameter[] parms;
		if(activityOnly) {
            //更改激活日期
            sqlUpdate = "UPDATE Profiles Set LastActivityDate = @LastActivityDate WHERE Username = @Username AND ApplicationName = @ApplicationName;";
			parms = new SqlParameter[]{						   
				new SqlParameter("@LastActivityDate", SqlDbType.DateTime),
				new SqlParameter("@Username", SqlDbType.VarChar, 256),
				new SqlParameter("@ApplicationName", SqlDbType.VarChar, 256)};
			parms[0].Value = activityDate;
			parms[1].Value = userName;
			parms[2].Value = appName;
		}
		else {
            //更改更新日期
			sqlUpdate = "UPDATE Profiles Set LastActivityDate = @LastActivityDate, LastUpdateDate = @LastUpdatedDate WHERE Username = @Username AND ApplicationName = @ApplicationName;";
			parms = new SqlParameter[]{
				new SqlParameter("@LastActivityDate", SqlDbType.DateTime),
				new SqlParameter("@LastUpdatedDate", SqlDbType.DateTime),
				new SqlParameter("@Username", SqlDbType.VarChar, 256),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -