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

📄 sqlbookshopprofileprovider.cs

📁 一个非常好的网上书店系统
💻 CS
📖 第 1 页 / 共 2 页
字号:
				new SqlParameter("@ApplicationName", SqlDbType.VarChar, 256)};
			parms[0].Value = activityDate;
			parms[1].Value = activityDate;
			parms[2].Value = userName;
			parms[3].Value = appName;
		}
        SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlUpdate, parms);
	}

    /// <summary>
    /// 获取当前用户的配置ID
    /// </summary>
    /// <param name="userName">用户名</param>
    /// <param name="isAuthenticated">验证标志</param>
    /// <param name="ignoreAuthenticationType">忽略验证标志</param>
    /// <param name="appName">应用程序名</param>
    /// <returns>配置ID</returns>
	public int GetUniqueID(string userName, bool isAuthenticated, bool ignoreAuthenticationType, string appName) {
		string sqlSelect = "SELECT ProfileID FROM Profiles WHERE Username = @Username AND ApplicationName = @ApplicationName";

		SqlParameter[] parms = {
			new SqlParameter("@Username", SqlDbType.VarChar, 256),
			new SqlParameter("@ApplicationName", SqlDbType.VarChar, 256)};
		parms[0].Value = userName;
		parms[1].Value = appName;
		if(!ignoreAuthenticationType) {
			Array.Resize<SqlParameter>(ref parms, parms.Length + 1);
			parms[2] = new SqlParameter("@IsAnonymous", SqlDbType.Bit);
			parms[2].Value = !isAuthenticated;
		}
		int uniqueID = 0;
		object retVal = null;
        retVal = SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlSelect, parms);
		if(retVal == null)
			uniqueID = CreateProfileForUser(userName, isAuthenticated, appName);
		else
			uniqueID = Convert.ToInt32(retVal);
		return uniqueID;
	}

    /// <summary>
    /// 创建当前用户的配置记录
    /// </summary>
    /// <param name="userName">用户名</param>
    /// <param name="isAuthenticated">验证标志</param>
    /// <param name="appName">应用程序名</param>
    /// <returns>记录条数</returns>
	public int CreateProfileForUser(string userName, bool isAuthenticated, string appName) {

		string sqlInsert = "INSERT INTO Profiles (Username,  LastActivityDate, LastUpdateDate, ApplicationName) Values(@Username, @LastActivityDate, @LastUpdatedDate, @ApplicationName); SELECT @@IDENTITY;";

		SqlParameter[] parms = {
			new SqlParameter("@Username", SqlDbType.VarChar, 256),
			new SqlParameter("@ApplicationName", SqlDbType.VarChar, 256),
			new SqlParameter("@LastActivityDate", SqlDbType.DateTime),
			new SqlParameter("@LastUpdatedDate", SqlDbType.DateTime)};

		parms[0].Value = userName;
		parms[1].Value = appName;
		parms[2].Value = DateTime.Now;
		parms[3].Value = DateTime.Now;
		int uniqueID = 0;
        int.TryParse(SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlInsert, parms).ToString(), out uniqueID);
		return uniqueID;
	}

    /// <summary>
    /// 获取非活动用户集合
    /// </summary>
    /// <param name="authenticationOption">验证设置</param>
    /// <param name="userInactiveSinceDate">搜索日期</param>
    /// <param name="appName">应用程序名</param>
    /// <returns>非活动的用户集合</returns>
	public IList<string> GetInactiveProfiles(int authenticationOption, DateTime userInactiveSinceDate, string appName) {

		StringBuilder sqlSelect = new StringBuilder("SELECT Username FROM Profiles WHERE ApplicationName = @ApplicationName AND LastActivityDate <= @LastActivityDate");

		SqlParameter[] parms = {
			new SqlParameter("@ApplicationName", SqlDbType.VarChar, 256),
			new SqlParameter("@LastActivityDate", SqlDbType.DateTime)};
		parms[0].Value = appName;
		parms[1].Value = userInactiveSinceDate;

        //判断验证设置
		switch(authenticationOption) {
			case AUTH_ANONYMOUS:
				sqlSelect.Append(" AND IsAnonymous = @IsAnonymous");
				Array.Resize<SqlParameter>(ref parms, parms.Length + 1);
				parms[2] = new SqlParameter("@IsAnonymous", SqlDbType.Bit);
				parms[2].Value = true;
				break;
			case AUTH_AUTHENTICATED:
				sqlSelect.Append(" AND IsAnonymous = @IsAnonymous");
				Array.Resize<SqlParameter>(ref parms, parms.Length + 1);
				parms[2] = new SqlParameter("@IsAnonymous", SqlDbType.Bit);
				parms[2].Value = false;
				break;
			default:
				break;
		}

		IList<string> usernames = new List<string>();
        //获取用户数据集
        SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlSelect.ToString(), parms);
		while(dr.Read()) {
			usernames.Add(dr.GetString(0));
		}
		dr.Close();
		return usernames;
	}

    /// <summary>
    /// 删除用户的配置
    /// </summary>
    /// <param name="userName">用户名</param>
    /// <param name="appName">应用程序名</param>
    /// <returns>是否成功</returns>
	public bool DeleteProfile(string userName, string appName) 
    {
        //获取用户的配置ID
        int uniqueID = GetUniqueID(userName, false, true, appName);
        //创建参数并赋值
		string sqlDelete = "DELETE FROM Profiles WHERE UniqueID = @UniqueID;";
		SqlParameter param = new SqlParameter("@UniqueId", SqlDbType.Int, 4);
		param.Value = uniqueID;
        //执行删除语句
        int numDeleted = SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlDelete, param);
		if(numDeleted <= 0)
			return false;
		else
			return true;
	}
    /// <summary>
    /// 找回配置信息
    /// </summary>
    /// <param name="authenticationOption">验证设置</param>
    /// <param name="usernameToMatch">用户名</param>
    /// <param name="userInactiveSinceDate">搜索日期</param>
    /// <param name="appName">应用程序名</param>
    /// <param name="totalRecords">返回条数</param>
    /// <returns>配置集合</returns>
	public IList<CustomProfileInfo> GetProfileInfo(int authenticationOption, string usernameToMatch, DateTime userInactiveSinceDate, string appName, out int totalRecords) {
        
		// 返回总条数
		StringBuilder sqlSelect1 = new StringBuilder("SELECT COUNT(*) FROM Profiles WHERE ApplicationName = @ApplicationName");
		SqlParameter[] parms1 = {
			new SqlParameter("@ApplicationName", SqlDbType.VarChar, 256)};
		parms1[0].Value = appName;

		// 找回配置信息
		StringBuilder sqlSelect2 = new StringBuilder("SELECT Username, LastActivityDate, LastUpdateDate, IsAnonymous FROM Profiles WHERE ApplicationName = @ApplicationName");
		SqlParameter[] parms2 = { new SqlParameter("@ApplicationName", SqlDbType.VarChar, 256) };
		parms2[0].Value = appName;
		int arraySize;
		// 通过用户名搜索.
		if(usernameToMatch != null) {
			arraySize = parms1.Length;
			sqlSelect1.Append(" AND Username LIKE @Username ");
			Array.Resize<SqlParameter>(ref parms1, arraySize + 1);
			parms1[arraySize] = new SqlParameter("@Username", SqlDbType.VarChar, 256);
			parms1[arraySize].Value = usernameToMatch;
			sqlSelect2.Append(" AND Username LIKE @Username ");
			Array.Resize<SqlParameter>(ref parms2, arraySize + 1);
			parms2[arraySize] = new SqlParameter("@Username", SqlDbType.VarChar, 256);
			parms2[arraySize].Value = usernameToMatch;
		}
		// 通过激活日期
		if(userInactiveSinceDate != null) {
			arraySize = parms1.Length;
			sqlSelect1.Append(" AND LastActivityDate >= @LastActivityDate ");
			Array.Resize<SqlParameter>(ref parms1, arraySize + 1);
			parms1[arraySize] = new SqlParameter("@LastActivityDate", SqlDbType.DateTime);
			parms1[arraySize].Value = (DateTime)userInactiveSinceDate;

			sqlSelect2.Append(" AND LastActivityDate >= @LastActivityDate ");
			Array.Resize<SqlParameter>(ref parms2, arraySize + 1);
			parms2[arraySize] = new SqlParameter("@LastActivityDate", SqlDbType.DateTime);
			parms2[arraySize].Value = (DateTime)userInactiveSinceDate;
		}
		//通过验证设置
		if(authenticationOption != AUTH_ALL) {
			arraySize = parms1.Length;
			Array.Resize<SqlParameter>(ref parms1, arraySize + 1);
			sqlSelect1.Append(" AND IsAnonymous = @IsAnonymous");
			parms1[arraySize] = new SqlParameter("@IsAnonymous", SqlDbType.Bit);  

			Array.Resize<SqlParameter>(ref parms2, arraySize + 1);
			sqlSelect2.Append(" AND IsAnonymous = @IsAnonymous");
			parms2[arraySize] = new SqlParameter("@IsAnonymous", SqlDbType.Bit);
            //判断是否是匿名
			switch(authenticationOption) {
				case AUTH_ANONYMOUS:   						
					parms1[arraySize].Value = true;
					parms2[arraySize].Value = true;
					break;
				case AUTH_AUTHENTICATED:
					parms1[arraySize].Value = false;
					parms2[arraySize].Value = false;
					break;
				default:
					break;
			}
		}
		IList<CustomProfileInfo> profiles = new List<CustomProfileInfo>();
		// 获取配置条数
        totalRecords = (int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlSelect1.ToString(), parms1);

		// 没有发现配置信息
		if(totalRecords <= 0)
			return profiles;
		SqlDataReader dr;
        dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlSelect2.ToString(), parms2);
		while(dr.Read()) {
			CustomProfileInfo profile = new CustomProfileInfo(dr.GetString(0), dr.GetDateTime(1), dr.GetDateTime(2), dr.GetBoolean(3));
			profiles.Add(profile);	
		}	
		dr.Close();
		return profiles;
	}
}

⌨️ 快捷键说明

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