登录小结

用户连续登录错误次数为3次时,现在用户在2分钟之内不允许继续登录,2分钟之后可以继续登录 :

今天复习了以前学过的一些知识,同时通过做作业自己又学到了新的知识:

下面就来分享一下我的作业中收获的知识,在这之前先看一下源码吧:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

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

private void btn_login_Click(object sender, EventArgs e)
{
string con = "data source=.\\SQLEXPRESS;integrated Security=true;Initial Catalog=Denglu"; //数据库连接字符串
SqlConnection sqlcnn = new SqlConnection(con);
sqlcnn.Open();
SqlCommand sqlcmm = sqlcnn.CreateCommand();
sqlcmm.CommandText = "select * from Login where
Name=@name and Password=@password";
sqlcmm.Parameters.AddWithValue("@name", this.txtName.Text);
sqlcmm.Parameters.AddWithValue("@password",this.txtPassword.Text);
SqlDataAdapter adapter = new SqlDataAdapter(sqlcmm);
DataTable dt = new DataTable();
adapter.Fill(dt);
if (dt.Rows.Count==1)
{
success();
}
if (dt.Rows.Count <= 0)
{
ErrorMessage();
Errors();
}
else if (dt.Rows.Count > 1)
{
MessageBox.Show("有重复的用户");
}

sqlcmm.Dispose();
//关闭连接
//conn.Close();
//释放资源
sqlcnn.Dispose();
}

private void success()
{
string con = "data source=.\\SQLEXPRESS;integrated Security=true;Initial Catalog=Denglu";
SqlConnection sqlcnn = new SqlConnection(con);
sqlcnn.Open();
SqlCommand sqlcmm = sqlcnn.CreateCommand();
sqlcmm.CommandText = "select * from Login";
SqlDataReader reader = sqlcmm.ExecuteReader();
while (reader.Read())
{
if (Convert.ToInt32(reader["Error"])<3)
{
MessageBox.Show("登录成功!");
Errors1();
ErrorTime();
}
else if (Convert.ToInt32(reader["Error"])>=3&&(System.DateTime.Now - Convert.ToDateTime(reader["ErrorTime"].ToString())).TotalMinutes > 2)  //判断系统时间比数据库时间相差的分钟数
{
MessageBox.Show("登录成功!");
Errors1();
ErrorTime();
}
else
{
ErrorMessage();
}
}
}
private void ErrorTime()
{
string con = "data source=.\\SQLEXPRESS;integrated Security=true;Initial Catalog=Denglu";
SqlConnection sqlcnn = new SqlConnection(con);
sqlcnn.Open();
SqlCommand sqlcmm = sqlcnn.CreateCommand();
sqlcmm.CommandText = "update Login set ErrorTime=GETDATE()";
int i = sqlcmm.ExecuteNonQuery();
sqlcmm.Dispose();
sqlcnn.Dispose();
}
private void Errors()
{
string con = "data source=.\\SQLEXPRESS;integrated Security=true;Initial Catalog=Denglu";
SqlConnection sqlcnn = new SqlConnection(con);
sqlcnn.Open();
SqlCommand sqlcmm = sqlcnn.CreateCommand();
sqlcmm.CommandText = "update Login set Error=Error+1";
int i = sqlcmm.ExecuteNonQuery();
sqlcmm.Dispose();
sqlcnn.Dispose();
}
private void Errors1()
{
string con = "data source=.\\SQLEXPRESS;integrated Security=true;Initial Catalog=Denglu";
SqlConnection sqlcnn = new SqlConnection(con);
sqlcnn.Open();
SqlCommand sqlcmm = sqlcnn.CreateCommand();
sqlcmm.CommandText = "update Login set Error=0";
int i = sqlcmm.ExecuteNonQuery();
sqlcmm.Dispose();
sqlcnn.Dispose();
}
private void ErrorMessage()
{
string con = "data source=.\\SQLEXPRESS;integrated Security=true;Initial Catalog=Denglu";
SqlConnection sqlcnn = new SqlConnection(con);
sqlcnn.Open();
SqlCommand sqlcmm = sqlcnn.CreateCommand();
sqlcmm.CommandText = "select * from Login";
SqlDataReader reader=sqlcmm.ExecuteReader();
while (reader.Read())
{
if (Convert.ToInt32(reader["Error"].ToString())<3)
{
MessageBox.Show("登录失败!");
}
else
{
MessageBox.Show("您的输入已经超过三次,请两分钟后再次输入!");
ErrorTime();
ErrorWait();
}
}
sqlcmm.Dispose();
sqlcnn.Dispose();
}

private void ErrorWait()
{
string con = "data source=.\\SQLEXPRESS;integrated Security=true;Initial Catalog=Denglu";
SqlConnection sqlcnn = new SqlConnection(con);
sqlcnn.Open();
SqlCommand sqlcmm = sqlcnn.CreateCommand();
sqlcmm.CommandText = "select * from Login";
SqlDataReader reader = sqlcmm.ExecuteReader();
while (reader.Read())
{
if ((System.DateTime.Now - Convert.ToDateTime(reader["ErrorTime"].ToString())).TotalMinutes > 2)
{
Errors1();
}
}
}
}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值