DAL:

IUserDAL

namespace Dal
{
/// <summary>
/// This interface is defined for user functions.
/// </summary>
public interface IUserDal
{
#region Returns Model /// <summary>
/// Gets user by username.
/// </summary>
/// <param name="username">The user's name.</param>
/// <returns>Returns user model.</returns>
User RetrieveUserByUserName(string userName); #endregion #region Public int /// <summary>
/// Updates the password of the user.
/// </summary>
/// <param name="newPassword">The new password.</param>
/// <param name="userName">The user's name.</param>
int UpdatePassword(string newPassword, string userName); #endregion
}
}

UserDAL

namespace Dal
{
/// <summary>
/// This class is used for defining user functions.
/// </summary>
public class UserDal : IUserDal
{
#region Returns Model /// <summary>
/// Gets user by username.
/// </summary>
/// <param name="userName">The user's name</param>
/// <returns>Return user model.</returns>
public User RetrieveUserByUserName(string userName)
{ User user = null; string sqlText = SqlText.GetUserByUserName;
SqlParameter[] prams = new SqlParameter[]
{
new SqlParameter("@username",userName),
};
try
{
SqlDataReader sqlDataReader = SqlHelper.ExecureReader(sqlText, prams);
if (sqlDataReader.Read())
{
user = new User();
user.UserName = userName;
user.Password = Convert.ToString(sqlDataReader["password"]);
user.RoleType = Convert.ToString(sqlDataReader["role_type"]);
user.Telephone = Convert.ToString(sqlDataReader["telephone"]);
user.Gender = sqlDataReader["gender"].ToString();
user.Email = sqlDataReader["email"].ToString();
user.Address = sqlDataReader["address"].ToString();
user.ChineseName = (sqlDataReader["chinese_name"] is DBNull) ? string.Empty : sqlDataReader["chinese_name"].ToString();
user.Language = (sqlDataReader["language"] is DBNull) ? string.Empty : sqlDataReader["language"].ToString();
} SqlHelper.CloseSqlDataReader(sqlDataReader);
}
catch(SqlException ex)
{
throw new UserException(UserException.RetrieveUserByUserName,ex);
} return user;
} #endregion #region Public int /// <summary>
/// Updates the password of the user.
/// </summary>
/// <param name="newPassword">The new password.</param>
/// <param name="userName">The user's name.</param>
public int UpdatePassword(string newPassword, string userName)
{
int influenceNumber = ; try
{
string sqlText = SqlText.UpdatePassword;
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter("@password", newPassword),
new SqlParameter("@userName", userName),
}; influenceNumber = SqlHelper.ExecuteNonQuery(sqlText, parms);
}
catch (SqlException ex)
{
throw new UserException(UserException.UpdatePasswordFailed, ex);
} return influenceNumber;
} #endregion
}
}

BLL

IUserBLL

namespace Bll
{
/// <summary>
/// This interface is used to define user's functions.
/// </summary>
[ServiceContract(Namespace="MyCompanyService")]
public interface IUserBll
{
#region Returns Model /// <summary>
/// Gets the user model.
/// </summary>
/// <param name="userName">The user's name.</param>
/// <returns>Returns user's model.</returns>
[OperationContract]
User RetrieveUserByUserName(string userName); #endregion #region Returns bool /// <summary>
/// Updates user's password.
/// </summary>
/// <param name="newPassword">The new password.</param>
/// <param name="userName">The user's name.</param>
[OperationContract]
bool UpdatePassword(string newPassword, string userName); #endregion
}
}

UserBLL

namespace Bll
{
/// <summary>
/// This class is used for realizing user's functions.
/// </summary>
public class UserBll:IUserBll
{
#region Field IUserDal userDal = new UserDal();
log4net.ILog log = log4net.LogManager.GetLogger(EqualsConst.GetServiceLoggerName); #endregion public UserBll() { } public UserBll(IUserDal userDal)
{
this.userDal = userDal;
} #region Returns Model /// <summary>
/// Gets the user by user's name.
/// </summary>
/// <param name="userName">The user's name.</param>
/// <returns>Returns user model.</returns>
public User RetrieveUserByUserName(string userName)
{
User user = null; try
{
user = userDal.RetrieveUserByUserName(userName);
}
catch (UserException ex)
{
log.Error(ExamException.RetrieveExamList, ex);
throw new FaultException<MyExceptionContainer>(new MyExceptionContainer()
{
ErrorMessage = ex.Message,
Description = ExamException.RetrieveExamList
});
} return user;
} #endregion #region Public bool /// <summary>
/// Updates user's password.
/// </summary>
/// <param name="newPassword">The new password.</param>
/// <param name="userName">The user's name.</param>
public bool UpdatePassword(string newPassword, string userName)
{
bool isUpdatePassworded = false; try
{
int i = userDal.UpdatePassword(newPassword, userName); if (i > )
{
isUpdatePassworded = true;
}
}
catch (UserException ex)
{
log.Error(UserException.UpdatePasswordFailed, ex);
throw new FaultException<MyExceptionContainer>(new MyExceptionContainer()
{
ErrorMessage = ex.Message,
Description = UserException.UpdatePasswordFailed
});
} return isUpdatePassworded;
} #endregion
}
}

Client

namespace OES
{ /// <summary>
/// This class is used for login.
/// </summary>
public partial class FormLogin : Form
{
#region Field private log4net.ILog log = log4net.LogManager.GetLogger(EqualsConst.GetLoggerName);
public User user = null; #endregion #region Constructor public FormLogin()
{
InitializeComponent();
} #endregion #region Private Method /// <summary>
/// The processing of btnSubmit.
/// </summary>
/// <param name="sender">The source object of event.</param>
/// <param name="e">The parameter of event.</param>
private void BtnSubmit_Click(object sender, EventArgs e)
{
UserBllService.UserBllClient userBll = new UserBllService.UserBllClient(); if (String.IsNullOrWhiteSpace(this.txtUsername.Text))
{
this.lblLoginResult.Text = Constant.UserException.UserNameIsNull;
}
else if (String.IsNullOrWhiteSpace(this.txtPassword.Text))
{
this.lblLoginResult.Text = Constant.UserException.PasswordIsNull;
}
else
{
string userName = CheckForParameter.ReplaceSqlChar(this.txtUsername.Text.Trim());
string password = CheckForParameter.ReplaceSqlChar(this.txtPassword.Text.Trim()); try
{
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(
delegate
{
user = userBll.RetrieveUserByUserName(userName);
}); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
delegate(object obj, RunWorkerCompletedEventArgs arg)
{
if (arg.Error == null)
{
if (null != user && user.Password.Equals(MD5Tool.MD5Tostring(password), StringComparison.InvariantCultureIgnoreCase))
{
this.DialogResult = DialogResult.OK;
}
else
{
this.lblLoginResult.Text = UserException.LoginedFailed;
}
}
else
{
log.Error(arg.Error);
MessageBox.Show(UIException.ConnectionWithWCFFail);
}
}); bw.RunWorkerAsync();
}
catch (FaultException<MyExceptionContainer> myException)
{
log.Error(myException.Message, myException);
}
catch (FaultException faultException)
{
log.Error(faultException.Message, faultException);
}
catch (Exception exception)
{
log.Error(exception.Message, exception);
}
}
} /// <summary>
/// The processing of close the form.
/// </summary>
/// <param name="sender">The source object of event.</param>
/// <param name="e">The parameter of event.</param>
private void BtnCancel_Click(object sender, EventArgs e)
{
this.Close();
this.Dispose();
} #endregion
}
}

UserLogin的更多相关文章

  1. 解决dedev5.7更新出现include\userlogin.class.php on line 21的办法

    第一种情况解决办法:   在dede\templets文件夹 找到 index_body.htm  文件 把这些注释掉. $(function() {    $.get("index_tes ...

  2. [转]Android的userlogin登录

    本文转自:http://hteqc6o.blog.sohu.com/199334086.html 用户注册 1.首先,先画你想要编译出的界面 根据草图,仅仅使用linearLayout的布局是不够的, ...

  3. 【报错】Validation failed for object='userLogin'. Error count: 1

    提交表单之后: Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing ...

  4. 解决织梦 \include\userlogin.class.php on line 21(或16) 报错的方法

    用了下DEDECMS v5.7 SP1版本,发现很多问题,其中一个比较严重的是,架到服务器上的dede网站后台打开菜单选项卡得不能动,等半天显示505服务器错误,这个真让人纠结,在本地调试明明好好的, ...

  5. Android Retrofit 2.0 使用-补充篇

    推荐阅读,猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava 4.RxBus 5.Android MVP+Retrofit+RxJava实践小 ...

  6. ABP源码分析四十二:ZERO的身份认证

    ABP Zero模块通过自定义实现Asp.Net Identity完成身份认证功能, 对Asp.Net Identity做了较大幅度的扩展.同时重写了ABP核心模块中的permission功能,以实现 ...

  7. 【解决方案】 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userHandler': Injection of resource dependencies failed;

    一个错误会浪费好多青春绳命 鉴于此,为了不让大家也走弯路,分享解决方案. [错误代码提示] StandardWrapper.Throwableorg.springframework.beans.fac ...

  8. 从无到有实现登录功能以及thinkphp怎么配置数据库信息

    好开心,终于解决了.从学习android到现在写登录功能已经不是一次两次了,如今再写想着肯定是信手拈来,没有想到的是尽然折磨了我一天的时间才搞定它.唉...... 先来看几张截图,这次的登录跟以往的不 ...

  9. 分享一个html+js+ashx+easyui+ado.net权限管理系统

    EasyUI.权限管理 这是个都快被搞烂了的组合,但是easyui的确好用,权限管理在项目中的确实用.一直以来博客园里也不少朋友分享过,但是感觉好的要不没源码,要不就是过度设计写的太复杂看不懂,也懒得 ...

随机推荐

  1. 教您如何检查oracle死锁,决解死锁

    oracle死锁问题一直困扰着我们,下面就教您一个oracle死锁的检查方法,如果您之前遇到过oracle死锁方面的问题,不妨一看…… oracle死锁问题一直困扰着我们,下面就教您一个oracle死 ...

  2. 【转】对于移动APP测试的一个小技巧

    目标:目前越来越多的应用要支持移动设备,html5的推出,方便了页面对移动app的支持,那么我们该如何有效的去测试同时支持app和web的代码?web的测试可以使用浏览器的一些工具来辅助测试,比如ff ...

  3. Tensorflow之安装

    1.fellow the instruction of https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/ge ...

  4. echo,printr,print_r之间的区别

    echo 返回值是void,可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(language construct)也就是关键字,而并不是真正的函数,因此不能作为表达式的一部分使用.使用的 ...

  5. Miniui updateRow更改列字段值

    当UPC等于upccode时,更改列Scanned+1 //先grid.findRow找到UPC等于upccode的行对象 var row = grid.findRow(function (row) ...

  6. PHP分页

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. PHP与javascript实现变量交互

    <?php /** * 本例是PHP和javascript交互的例子,php中的值赋给js变量中,前提是这个php变量必须有值才行,就算是假分支中. * 比如php中的$flags在本例中为tr ...

  8. 【转】用java实例学习MVC模式

    .1 MVC模式 MVC是三个单词的缩写,这三个单词分别为:模型(Model).视图(View)和控制(Controller).MVC模式的目的就是实现Web系统的职能分工.下面以J2EE开发进行介绍 ...

  9. JavaScript之简易计算器

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  10. lua技巧分享之保护执行

    我们在c#/c++里为了防止调用出现异常的时候程序可以正常的执行,经常使用try{}catch{}的结构, 那么,语言简单的lua是怎么做到的呢?答案就在pcall 先简单的介绍一下这个函数: --尝 ...