zoukankan      html  css  js  c++  java
  • (6)C# 之 ADO.NET 登陆框详解

    几乎学习到任何一种编程语言,登陆框案列都是必不可少的,那么今天我也来写一篇登陆框案例详解。

     
    ①首先是建立数据库表,如下图
    ◇说明:errortimes这个字段,主要作用在于每次用户输入错误之后,errortimes就会自增1,当errortimes达到3的时候,该账户就会被锁定。如果用户在errortimes达到3之前成功登陆了,那么errortimes值就会清。
     
    ②然后新建一个WPF窗口,如下图
          
    ③双击“登陆按钮”,开始写代码,具体代码如下:
     1     if (username.Text.Length <= 0)
     2             {
     3                 MessageBox.Show("请输入用户名");
     4                 return;
     5             } //判断是否有输入用户名
     6             if (password.Text.Length <= 0)
     7             {
     8                 MessageBox.Show("请输入密码");
     9                 return;
    10             }         //判断是否有输入密码
    11             DataTable dt =  SqlHelper.ExecuteDataTable("select * from T_User where username = @username",new SqlParameter ("@username",username.Text));
    12 //更具用户名来获得查询结果
    13             if (dt.Rows.Count <= 0)
    14             {
    15                 MessageBox.Show("用户名错误");
    16                 return;
    17             }      //找不到用户名的情况
    18             int errortimes = (int)SqlHelper.ExecuteScalar("select errortimes from T_User where username=@username",new SqlParameter("@username", username.Text));   //获得该用户名的错误次数
    19             if (errortimes >= 3)
    20             {
    21                 MessageBox.Show("错误次数大于三次,账号已锁定");
    22                 return;
    23             }
    24             if (dt.Rows.Count > 1)
    25             {
    26                 MessageBox.Show("用户名重复");
    27                 return;
    28             }
    29             else
    30             {
    31                 DataRow dr = dt.Rows[0];
    32                 string pwd = (string)dr["password"];
    33                 if (pwd != password.Text)
    34                 {
    35                     MessageBox.Show("密码错误");
    36                     SqlHelper.ExecuteNonQuery("update T_User set errortimes = errortimes+1 where username = @username",new SqlParameter("@username", username.Text));            
    37 //每次输入密码错误,errortimes就自增1
    38                     return;
    39                 }
    40                 else
    41                 {
    42                     MessageBox.Show("恭喜你,登陆成功");
    43                     SqlHelper.ExecuteNonQuery("update T_User set errortimes = 0 where username= @username",new SqlParameter("@username",username.Text));
    44                     return;
    45                 }
    46                 
    47             }
    ◇说明:这里介绍一个防御性编程。
              例如:我们输入的用户名和密码长度是不可能小于零的,但是为了防止一些其他情况的发生,我们还是在写判断语句的时候把小于零的情况给带上。还有就是,我们查询出的用户名个数也是不可能小于零的,但是我们也把小于零给带上。这就是防御性编程。考虑更多的情况发生。
     
    ◇其他情况在代码的注释中都说的很详细了,共勉之。
     
  • 相关阅读:
    NPOI操作EXCEL
    几个英文的数学概念
    C#中将鼠标光标变为忙碌状态
    C#使用Linq to Sqlite
    SSM-SpringMVC-25:SpringMVC异常顶级之自定义异常解析器
    SSM-SpringMVC-24:SpringMVC异常高级之自定义异常
    SSM-SpringMVC-23:SpringMVC中初探异常解析器
    SSM-SpringMVC-22:SpringMVC中转发(forward)和重定向(redirect)
    SSM-SpringMVC-21:SpringMVC中处理器方法之返回值Object篇
    jQuery-01:on live bind delegate
  • 原文地址:https://www.cnblogs.com/kaolalovemiaomiao/p/4707568.html
Copyright © 2011-2022 走看看