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. 在Firefox中通过AJAX跨域访问Web资源---

    一.解决在firefox中无法跨域访问的问题 AJAX从本质上讲就是命名用XMLHttpRequest组件来向服务端发送HTTP请求,请接收相应信息.至于成功接收到响应信息后的操作,就和普通的Web客 ...

  2. DML 数据操纵语言

    1.INSERT(插入)语言结构 INSERT INTO table(表名)(要插入的列名) VALUES(要插入的具体值): table:要插入数据的表的表名 column[,column]:表中要 ...

  3. Sublime Text shift+ctrl妙用

    1 :按住shift+ctrl然后按←或→可快速选中一行中的某一部分,相当于双击鼠标选中. 当你想在代码末尾加注释的话,这个方法很好用 输入文字->光标移到文字末尾->按住shift+ct ...

  4. React Native学习-调取摄像头第三方组件:react-native-image-picker

    近期做的软件中图片处理是重点,那么自然也就用到了相机照相或者相册选取照片的功能. react-native中有image-picker这个第三方组件,但是0.18.10这个版本还不是太支持iPad. ...

  5. 剑指Offer30 从1到n整数出现1的个数

    /************************************************************************* > File Name: 30_NumerO ...

  6. 人情世故&潜规则

    大凡成功的牛人,无一例外都明白这一点.他们读懂了社会的本质和人际交往的潜规则,知道对方需要什么,知道对方脑子里在想什么.你几乎看不见他奔波劳碌,但是在不动声色中,他就已经实现人生目标.他们成功的密码是 ...

  7. Part 10 AngularJS sort rows by table header

    Here is what we want to do 1. The data should be sorted when the table column header is clicked 2. T ...

  8. byte[] 清空

    1. using(byte buff = new byte[Size]){  // 你要用的代码,} 2. Array.Clear(bytes, 0 ,bytes.Length);

  9. 【iOS基础学习随笔-1】-基于对象的程序设计

    一.对象: 1.在基于对象的程序设计中,一个程序分解成若干个不同的对象,每个对象都有自己独有的能力. 2.一个生产线上的一个工位只负责做好一件事.如果生产出的汽车的车门没有漆好,那问题很可能出在负责上 ...

  10. 20141030--SQL2008常用命令-1

    create database biao2--创建新的数据库 go use biao2 go create table shuiguo--创建表shuiguo ,create table创建表 ( 序 ...