您的位置:首页 > 编程语言 > C#

(6)C# 之 ADO.NET 登陆框详解

2015-10-22 15:33 561 查看
几乎学习到任何一种编程语言,登陆框案列都是必不可少的,那么今天我也来写一篇登陆框案例详解。

①首先是建立数据库表,如下图



◇说明:errortimes这个字段,主要作用在于每次用户输入错误之后,errortimes就会自增1,当errortimes达到3的时候,该账户就会被锁定。如果用户在errortimes达到3之前成功登陆了,那么errortimes值就会清。

②然后新建一个WPF窗口,如下图



③双击“登陆按钮”,开始写代码,具体代码如下:

if (username.Text.Length <= 0)
{
MessageBox.Show("请输入用户名");
return;
} //判断是否有输入用户名
if (password.Text.Length <= 0)
{
MessageBox.Show("请输入密码");
return;
}         //判断是否有输入密码
DataTable dt =  SqlHelper.ExecuteDataTable("select * from T_User where username = @username",new SqlParameter ("@username",username.Text));
//更具用户名来获得查询结果
if (dt.Rows.Count <= 0)
{
MessageBox.Show("用户名错误");
return;
}      //找不到用户名的情况
int errortimes = (int)SqlHelper.ExecuteScalar("select errortimes from T_User where username=@username",new SqlParameter("@username", username.Text));   //获得该用户名的错误次数
if (errortimes >= 3)
{
MessageBox.Show("错误次数大于三次,账号已锁定");
return;
}
if (dt.Rows.Count > 1)
{
MessageBox.Show("用户名重复");
return;
}
else
{
DataRow dr = dt.Rows[0];
string pwd = (string)dr["password"];
if (pwd != password.Text)
{
MessageBox.Show("密码错误");
SqlHelper.ExecuteNonQuery("update T_User set errortimes = errortimes+1 where username = @username",new SqlParameter("@username", username.Text));
//每次输入密码错误,errortimes就自增1
return;
}
else
{
MessageBox.Show("恭喜你,登陆成功");
SqlHelper.ExecuteNonQuery("update T_User set errortimes = 0 where username= @username",new SqlParameter("@username",username.Text));
return;
}

}


◇说明:这里介绍一个防御性编程。
例如:我们输入的用户名和密码长度是不可能小于零的,但是为了防止一些其他情况的发生,我们还是在写判断语句的时候把小于零的情况给带上。还有就是,我们查询出的用户名个数也是不可能小于零的,但是我们也把小于零给带上。这就是防御性编程。考虑更多的情况发生。

◇其他情况在代码的注释中都说的很详细了,共勉之。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: