概述:输错三次禁止登陆,15分钟后才能继续。

图示:

Form1代码:

using System;

using System.Configuration;

using System.Data.SqlClient;

using System.Windows.Forms;

namespace 登录验证项目

{
     public partial class Form1 : Form
     {
         public Form1()
         {
             InitializeComponent();
         }

private void button1_Click(object sender, EventArgs e)
         {
             //连接数据库
             //将连接字符串写入配置文件中 string connStr = "sever=.;uid=sa;pwd=123456;database=demo";

这部分写在配置文件中

//<connectionStrings>
   // <add name="SqlConn" connectionString="server=.;uid=sa;pwd=123456;database=LoginBlock"/>
  //</connectionStrings>

//条添加引用引入configuration命名空间
             string connStr = ConfigurationManager.ConnectionStrings["SqlConn"].ConnectionString;
             using (SqlConnection conn = new SqlConnection(connStr))
             {
                 using (SqlCommand cmd = conn.CreateCommand())
                 {

conn.Open();
                     //select 查询语句str
                     string str = @"SELECT  [Uid]
                                               ,[Unm]
                                               ,[Pwd]
                                               ,[ErrorDate]
                                               ,[ErrorTimes]
                                           FROM [Login_Block]
                                           WHERE Unm='" + textBox1.Text.Trim()
                                           + "' and Pwd='" + textBox2.Text.Trim() + "' ";
                     cmd.CommandText = str;
                     // bool ishasdata=false;

//这里创建Login对象

Login login = null;
                     using (SqlDataReader reader = cmd.ExecuteReader())
                     {//判断是否有数据
                         #region MyRegion
                         //if (!reader.hasrows)
                         //{
                         //    //修改错误时间,错误次数

//}
                         #endregion
                         #region MyRegion
                         if (reader.HasRows)
                         {
                             reader.Read();
                         }
                         #endregion
                         if (reader.Read())
                         {
                             login = new Login();
                             login.Uid = int.Parse(reader["Uid"].ToString());
                             login.Pwd = reader["Pwd"].ToString();
                             login.ErrorTimes = int.Parse(reader["ErrorTimes"].ToString());
                             login.Errordata = DateTime.Parse(reader["Errordate"].ToString());
                         }
                         // ishasdata = reader.HasRows;

}//花括号执行结束之前reader对象一直占用conn对象
                     if (login == null/*!ishasdata*/)
                     {
                         //修改 错误时间,错误次数  where UserName=txtUserName.Text
                         cmd.CommandText =
                             "update Login_Block set Errordate=getdate(), ErrorTimes=ErrorTimes+1 where Unm='" +
                             textBox1.Text.Trim() + "'";
                         cmd.ExecuteNonQuery();
                         //MessageBox.Show("用户名密码Error");
                         return;
                     }
                     //执行有数据的过程
                     if (login.ErrorTimes < 3 || DateTime.Now.Subtract(login.Errordata).Minutes > 15)
                     {
                         MessageBox.Show("登录成功!!");
                         cmd.CommandText = "update Login_Block set ErrorTimes=0,Errordate=getdate() where Uid=" + login.Uid;
                         cmd.ExecuteNonQuery();
                     }
                     else
                     {
                         MessageBox.Show("登录失败!账号被锁定");
                     }
                 }
             }
         }
     }

}

Login类:

using System;

namespace 登录验证项目

{
     public class Login
     {
         //[Uid],[Pwd],[ErrorTimes],[Errordata]
         public int Uid { get; set; }
         public string Unm { get; set; }
         public string Pwd { get; set; }
         public int ErrorTimes { get; set; }
         public DateTime Errordata { get; set; }
     }

}

数据库:

表:Login_Block

字段:

[Uid]

[Unm]

[Pwd]

[ErrorDate]

[ErrorTimes]

WinForm登录验证的更多相关文章

  1. ASP.NET MVC 登录验证

     好久没写随笔了,这段时间没 什么事情,领导 一直没安排任务,索性 一直在研究代码,说实在的,这个登录都 搞得我云里雾里的,所以这次我可能也讲得不是 特别清楚,但是 我尽力把我知道的讲出来,顺便也对自 ...

  2. Shiro安全框架入门篇(登录验证实例详解与源码)

    转载自http://blog.csdn.net/u013142781 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和J ...

  3. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  4. AD域登录验证

    AD域登录验证 作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/5799699.html 需求 系统在登录的时候,需要根据用户名和密码验证连接域服务器进行 ...

  5. ASP.NET MVC4 Forms 登录验证

    Web.config配置: 在<system.web>节下: <authentication mode="Forms"> <forms loginUr ...

  6. MVC前台页面做登录验证

    最近接触了一个电商平台的前台页面,需要做一个登录验证,具体情况是:当用户想要看自己的订单.积分等等信息,就需要用户登录之后才能查询,那么在MVC项目中我们应该怎么做这个前台的验证呢? 1.我在Cont ...

  7. [MVC学习笔记]5.使用Controller来代替Filter完成登录验证(Session校验)

          之前的学习中,在对Session校验完成登录验证时,通常使用Filter来处理,方法类似与前文的错误日志过滤,即新建Filter类继承ActionFilterAttribute类,重写On ...

  8. ThinkPHP之登录验证

    验证方面写的不是很完整,正在完善当中 <?php /** * Created by dreamcms. * User: Administrator * Date: 2016/9/5 * Time ...

  9. ASP.NET MVC3 实现用户登录验证

    自定义一个授权筛选器类,继承于AuthorizeAttribute: using System; using System.Web; using System.Web.Mvc; namespace M ...

随机推荐

  1. JS table内容转成二维数组,支持colspan和rowspan

    思路:1.先初始化colspan的数据到数组2.根据rowspan和colspan计算th和td的矩阵二次填充数组 说明:需要引用到第三方库jQuery,table中的th和td行和列跨度必须正确 & ...

  2. ListView展示不同布局需要注意的地方

    尊重劳动成果,转载请标明出处:http://www.cnblogs.com/tangZH/p/8419010.html 我们在项目中经常需在一个listview中展示不一样的布局,我们可以在adapt ...

  3. 基于Git项目管理客户端SourceTree的免注册安装及远程连接方法

    作为程序员,不可避免的要在github上查询代码,而在企业项目中,为了使得项目好管理需要使用项目管理客户端,所以接下来详细讲解一下基于git的sourceTree在windows系统下的安装及与Git ...

  4. SpringMVC解决@ResponseBody返回Json的Date日期类型的转换问题

    在做项目的时候,发现后台把Date类型的属性以json字符串的形式返回,前台拿不到转换后的日期格式,始终响应回去的都是long类型时间戳. 查阅资料之后找到解决方法: 方法一(在springmvc的x ...

  5. python3字符串格式化format()函数的简单用法

    format()函数 """ 测试 format()函数 """ def testFormat(): # format()函数中有几个元素, ...

  6. 如何让EasyUI的Tree或者ComboTree节点不显示图标?

    版本:jQuery EasyUI 1.3.2 通过测试,只需把节点的state属性设置为null即可使EasyUI的Tree或者ComboTree控件的节点不显示图标.

  7. C# -- 结构、访问修饰符

    C# -- 结构.访问修饰符 1. 结构: struct 类型 对于结构,不像类那样存在继承. 一个结构不能从另一个结构或类继承,而且不能作为一个类的基. 但是,结构从基类 Object 继承. 结构 ...

  8. LeetCode算法题-Design HashMap(Java实现)

    这是悦乐书的第299次更新,第318篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第167题(顺位题号是706).在不使用任何内置哈希表库的情况下设计HashMap.具体 ...

  9. Gitlab利用Webhook实现Push代码后的jenkins自动构建

    之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布.这种方式每次在发版的时候,需要人工去执行je ...

  10. json 解析错误的问题

    “/”应用程序中的服务器错误. 未能加载文件或程序集“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe ...