(6)C# 之 ADO.NET 登陆框详解
2015-10-22 15:33
561 查看
几乎学习到任何一种编程语言,登陆框案列都是必不可少的,那么今天我也来写一篇登陆框案例详解。
①首先是建立数据库表,如下图
◇说明:errortimes这个字段,主要作用在于每次用户输入错误之后,errortimes就会自增1,当errortimes达到3的时候,该账户就会被锁定。如果用户在errortimes达到3之前成功登陆了,那么errortimes值就会清。
②然后新建一个WPF窗口,如下图
③双击“登陆按钮”,开始写代码,具体代码如下:
◇说明:这里介绍一个防御性编程。
例如:我们输入的用户名和密码长度是不可能小于零的,但是为了防止一些其他情况的发生,我们还是在写判断语句的时候把小于零的情况给带上。还有就是,我们查询出的用户名个数也是不可能小于零的,但是我们也把小于零给带上。这就是防御性编程。考虑更多的情况发生。
◇其他情况在代码的注释中都说的很详细了,共勉之。
①首先是建立数据库表,如下图
◇说明: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; } }
◇说明:这里介绍一个防御性编程。
例如:我们输入的用户名和密码长度是不可能小于零的,但是为了防止一些其他情况的发生,我们还是在写判断语句的时候把小于零的情况给带上。还有就是,我们查询出的用户名个数也是不可能小于零的,但是我们也把小于零给带上。这就是防御性编程。考虑更多的情况发生。
◇其他情况在代码的注释中都说的很详细了,共勉之。
相关文章推荐
- C# Winform 中真正意义的透明控件
- 【C#】ContextMenuStrip 右键菜单颜色设置
- C#禁止关闭窗体
- 【C#】聊聊不需要记密码的密码管理
- C# 语音识别
- 【巩固地基】系列之:C#基础读书笔记(杂)
- C# list 筛选FindAll
- c#控件的name和text属性有什么不同?
- C#中关于Gridview的一些属性(四、绑定)
- 判断矩阵元素相连——CSharp数组
- C#对象初始或器-Chapter3 P38
- c# 基本值类型及其默认值
- c#网页截图
- c#Task类。实现异步的一种方式
- C# 模拟web Get,Post
- C#中调用百度地图API应用(.net&nb…
- C# 多线程(二)
- C# 多线程(一)
- C# 图形图像
- C# 绘制曲线(一)