WinForm登录验证
概述:输错三次禁止登陆,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登录验证的更多相关文章
- ASP.NET MVC 登录验证
好久没写随笔了,这段时间没 什么事情,领导 一直没安排任务,索性 一直在研究代码,说实在的,这个登录都 搞得我云里雾里的,所以这次我可能也讲得不是 特别清楚,但是 我尽力把我知道的讲出来,顺便也对自 ...
- Shiro安全框架入门篇(登录验证实例详解与源码)
转载自http://blog.csdn.net/u013142781 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和J ...
- 练习:python 操作Mysql 实现登录验证 用户权限管理
python 操作Mysql 实现登录验证 用户权限管理
- AD域登录验证
AD域登录验证 作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/5799699.html 需求 系统在登录的时候,需要根据用户名和密码验证连接域服务器进行 ...
- ASP.NET MVC4 Forms 登录验证
Web.config配置: 在<system.web>节下: <authentication mode="Forms"> <forms loginUr ...
- MVC前台页面做登录验证
最近接触了一个电商平台的前台页面,需要做一个登录验证,具体情况是:当用户想要看自己的订单.积分等等信息,就需要用户登录之后才能查询,那么在MVC项目中我们应该怎么做这个前台的验证呢? 1.我在Cont ...
- [MVC学习笔记]5.使用Controller来代替Filter完成登录验证(Session校验)
之前的学习中,在对Session校验完成登录验证时,通常使用Filter来处理,方法类似与前文的错误日志过滤,即新建Filter类继承ActionFilterAttribute类,重写On ...
- ThinkPHP之登录验证
验证方面写的不是很完整,正在完善当中 <?php /** * Created by dreamcms. * User: Administrator * Date: 2016/9/5 * Time ...
- ASP.NET MVC3 实现用户登录验证
自定义一个授权筛选器类,继承于AuthorizeAttribute: using System; using System.Web; using System.Web.Mvc; namespace M ...
随机推荐
- Vs2017 无法调试APP
其实一切都是扯,看看有没有主活动吧 症状:能部署安装,没有快捷方式,不启动调试.XARAMIN不能在XML中配置主活动,会自动根据[Activity(Label = "AA", ...
- vue中引用swiper轮播插件
有时候我们需要在vue中使用轮播组件,如果是在vue组件中引入第三方组件的话,最好通过npm安装,从而进行统一安装包管理. 申明:本文所使用的是vue.2x版本. 通过npm安装插件: npm ins ...
- 解决ViewGroup不调用onDraw()的问题
今天在做项目的时候自定义了一个View,继承了LinearLayout,结果,里面的onDraw()方法一直无法被调用. 后来发现ViewGroup是默认不调用onDraw()方法的. 原因我们暂且不 ...
- Android .9.png 的介绍
概述 .9.PNG是安卓开发里面的一种特殊的图片,这种格式的图片通过ADT自带的编辑工具生成,使用九宫格切分的方法.点九图是一种可拉伸的位图,android会自动调整它的大小,来使图像在充当背景时可以 ...
- Docker Data Center系列(一)- 快速搭建云原生架构的实践环境
本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...
- JHipster技术栈定制 - 基于UAA的微服务之间安全调用
本文通过代码实例演示如何通过UAA实现微服务之间的安全调用. uaa: 身份认证服务,同时也作为被调用的资源服务.服务端口9999. microservice1: 调用uaa的消费者服务,服务端口80 ...
- wc基础功能
第一次作业 项目地址 https://gitee.com/xxlznb/WordCount PSP WordCount 预估耗时(分钟) 实际耗时 计划 20 30 预估任务需要时间 20 30 开发 ...
- [20190415]关于shared latch(共享栓锁).txt
[20190415]关于shared latch(共享栓锁).txt http://andreynikolaev.wordpress.com/2010/11/17/shared-latch-behav ...
- anaconda --包管理和环境管理器
前言: 以下所有的命令都Win10环境的 Anaconda Prompt 中 环境管理 创建虚拟环境 conda create --name env_name python 也可以指定 Python ...
- 交替方向乘子法(ADMM)
交替方向乘子法(ADMM) 参考1 参考2 经典的ADMM算法适用于求解如下2-block的凸优化问题( 是最优值,令 表示一组最优解): Block指我们可以将决策域分块,分成两组变量, 这里面 都 ...