概述:输错三次禁止登陆,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. markdown写作方法规范参考汇总

    目录 markdown写作方法 markdown规范 补 本文转载自:https://blog.csdn.net/xiaogeldx/article/details/89208074 本文总结了自己的 ...

  2. Django 如何获取真实远程客户端IP

    问题简述 我们知道HttpRequest.META字典包含所有HTTP头部信息(可用的头部信息取决于客户端和服务器).一般情况下,HttpRequest.META.get('REMOTE_ADDR') ...

  3. Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee

    双击 勾上蓝色保存

  4. mysql面试题

    01. 列举常见的关系型数据库和非关系型都有那些? 1.关系型数据库通过外键关联来建立表与表之间的关系,---------常见的有:SQLite.Oracle.mysql 2.非关系型数据库通常指数据 ...

  5. MySql 学习之路-高级1

    Mysql自学之路-高级1 目录: 1.CREATE DATABASE 创建数据库 2.CREATE TABLE 创建数据表 3.INSERT INTO SELECT 把一个表中的数据拷贝到另一个表中 ...

  6. Redis学习笔记(2)——Redis的下载安装部署

    一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...

  7. Java的动态代理

    什么是动态代理(dynamic proxy) 动态代理(以下称代理),利用Java的反射技术(Java Reflection),在运行时创建一个实现某些给定接口的新类(也称“动态代理类”)及其实例(对 ...

  8. Zookeeper集群为什么要是单数

    (原) 在zookeeper集群中,会有三种角色,leader. follower. observer分别对应着总统.议员.观察者. 半数以上投票通过:可以这样理解.客户端的增删改操作无论访问到了哪台 ...

  9. python项目在无外网的生产环境解决沙盒依赖问题

    参考 https://yq.aliyun.com/articles/159599 https://www.jianshu.com/p/08c657bd34f1 缺点是 只能针对python的环境 做沙 ...

  10. 一 Struts2 开发流程

    SSH与SSM简介SSM:Spring+SpringMVC+MybatisSSH:Struts2+Hibernate+SpringStruts2:是侧重于控制层的框架Hibernate:是一个ORM( ...