欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# winform实现登陆次数限制

程序员文章站 2023-11-14 21:19:28
我们在网上登陆的时候有些网站在用户多次输错密码之后会自动把账户冻结,不能在进行登陆,小编这次做的winform程序就是要实现这种功能,具体内容如下 功能一:根据数据库字段...

我们在网上登陆的时候有些网站在用户多次输错密码之后会自动把账户冻结,不能在进行登陆,小编这次做的winform程序就是要实现这种功能,具体内容如下

功能一:根据数据库字段判断用户名和密码是否匹配;

功能二:如果输入错误自动记录连续错误次数;

功能三:如果用户登陆成功之后会自动清除错误次数,使用户仍然可以连续登陆3次;

首先在winform窗体上拖入两个label和textbox,textbox分别命名为txbusername,txbpassword;然后在拖入一个button按钮;双击button按钮写按钮事件,代码如下:

private void button1_click(object sender, eventargs e)
    {
      using (sqlconnection con = new sqlconnection("server=.; database=text; integrated security=sspi;"))
      {
        using (sqlcommand com = new sqlcommand())
        {
          com.commandtext = "select * from t_users where username=@username";
          com.connection = con;
          con.open();
          com.parameters.add(new sqlparameter("username", txbusername.text));
          //com.parameters.add(new sqlparameter("password", textbox2.text));
          using (sqldatareader read = com.executereader())
          {
            if (read.read())
            {
              int errortimes = read.getint32(read.getordinal("errortimes")); //读取错误登陆次数
              if (errortimes >= 3)    //判断错误次数是否大于等于三
              {
                messagebox.show("sorry 你已经不能再登陆了!");
              }
              else
              {
                string passwored = read.getstring(read.getordinal("password"));
                if (passwored == txbpassword.text)
                {
                  messagebox.show("登陆成功!");
                  this.qingling();        //登陆成功把错误登陆次数清零
                }
                else
                {
                  messagebox.show("登陆失败!");
                  this.leiji();        //登陆失败把错误登陆次数加一
                }
              }
            }
          }
        }
      }
    } 

累加错误登陆次数函数:       

public void leiji()
    {
      using (sqlconnection con = new sqlconnection("server=.; database=text; integrated security=sspi;"))
      {
        using (sqlcommand com = new sqlcommand())
        {
          com.connection = con;
          com.commandtext = "update t_users set errortimes=errortimes+1 where username=@username";
          com.parameters.add(new sqlparameter("username", txbusername.text));
          con.open();
          com.executenonquery();
        }
      } 
    }

清零错误登陆次数函数:       

 public void qingling()
    {
      using (sqlconnection con = new sqlconnection("server=.; database=text; integrated security=sspi;"))
      {
        using (sqlcommand com = new sqlcommand())
        {
          com.connection = con;
          com.commandtext = "update t_users set errortimes=0 where username=@username";
          com.parameters.add(new sqlparameter("username", txbusername.text));
          con.open();
          com.executenonquery();
        }
      }
    }

在button事件的代码中小编使用了using,关于using的用法与好处在《谈c# using的用法与好处》中已经写过。

以上就是本文的全部内容,希望对大家的学习有所帮助。