
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.Configuration;
using System.Data.SqlClient;
namespace denglu1._0
{
public partial class Form1 : Form
{
string str = string.Empty;
int errorcount = 0;
public Form1()
{
InitializeComponent();
}
private void btn_login_Click(object sender, EventArgs e)
{
str = ConfigurationManager.ConnectionStrings["strcnn"].ConnectionString;
int sqlerror = GetError();//获取当期用户的登陆次数,以便进行比较
if (sqlerror >= 3)
{
DateTime errortime = GetErrorTime();
//Subtract函数减去指定时间,返回一个时间差,时间的格式可以是分钟也可以是秒、小时
TimeSpan span = DateTime.Now.Subtract(errortime);
double minute = span.TotalMinutes;//取时间间隔的分钟数
// double m = span.TotalSeconds;
if (minute < 2)
{
MessageBox.Show("您已经连续3次输入密码错误,系统已被锁定,请两分钟之后再次重试");
//后面的代码不执行
return;
}
else
{
errorcount = 0;
UpdateError(errorcount);
}
}
errorcount = GetError();
DataTable dt= GetDataTable();
if (dt .Rows .Count <=0)
{
errorcount++;
UpdateError(errorcount);
UpdateErrorTime();
MessageBox.Show("输入的用户名和密码不正确,请重新输入");
}
else if (dt.Rows.Count > 1)
{
MessageBox.Show("系统出现故障,请与管理员联系");
}
else
{//登陆成功后,错误次数清零
errorcount = 0;
UpdateError(errorcount );
MessageBox.Show("登陆成功");
}
}
//更改用户登陆错误的当前时间
private void UpdateErrorTime()
{
SqlConnection sqlcnn = new SqlConnection(str);
SqlCommand sqlcmm = new SqlCommand();
sqlcnn.Open();
sqlcmm.Connection = sqlcnn;
sqlcmm.CommandText = "update users set errortime=@errortime where username=@username";
sqlcmm.Parameters.AddWithValue("@errortime", DateTime.Now);
sqlcmm.Parameters.AddWithValue("@username", this.txt_name.Text);
sqlcmm.ExecuteNonQuery();
}
//获取当前用户错误登陆时的时间
private DateTime GetErrorTime()
{
SqlConnection sqlcnn = new SqlConnection(str);
SqlCommand sqlcmm = new SqlCommand();
sqlcnn.Open();
sqlcmm.Connection = sqlcnn;
sqlcmm.CommandText = "select errortime from users where username=@username";
sqlcmm.Parameters.AddWithValue("@username", this.txt_name.Text);
//返回一行一列
object obj = sqlcmm.ExecuteScalar();
return Convert.ToDateTime(obj);
}
//获取用户登陆的错误次数
private int GetError()
{
SqlConnection sqlcnn = new SqlConnection(str );
SqlCommand sqlcmm = new SqlCommand();
sqlcnn.Open();
sqlcmm.Connection = sqlcnn;
sqlcmm.CommandText = "select error from users where username=@username";
sqlcmm.Parameters.AddWithValue("@username",this .txt_name .Text );
object obj= sqlcmm.ExecuteScalar();
if (DBNull.Value.Equals(obj) == true)//判断下,若obj的值为空,则返回0
{
return 0;
}
else
{
return Convert.ToInt32(obj );
}
sqlcmm.Dispose();
sqlcnn.Close();
sqlcnn.Dispose();
}
//更改相应用户的登陆错误次数
private void UpdateError(int errorcount)
{
SqlConnection sqlcnn = new SqlConnection(str);
SqlCommand sqlcmm = new SqlCommand();
sqlcmm.Connection = sqlcnn;
sqlcnn.Open();
sqlcmm.CommandText = "update users set error=@error where username=@username";
sqlcmm.Parameters.AddWithValue("@error",errorcount );
sqlcmm.Parameters.AddWithValue("username",this .txt_name .Text );
sqlcmm.ExecuteNonQuery();
sqlcmm.Dispose();
sqlcnn.Close();
sqlcnn.Dispose();
}
//根据用户输入的用户和密码从数据库中查询相对应的数据集
private DataTable GetDataTable()
{
SqlConnection sqlcnn = new SqlConnection(str);
SqlCommand sqlcmm = new SqlCommand();
sqlcmm.Connection = sqlcnn;
sqlcmm.CommandText = "select * from users where username=@username and password=@pw";
sqlcmm.Parameters.AddWithValue("@username", this.txt_name.Text);
sqlcmm.Parameters.AddWithValue("@pw", this.txt_pw.Text);
SqlDataAdapter sda = new SqlDataAdapter(sqlcmm );
DataTable dt = new DataTable();
sda.Fill(dt );
sqlcmm.Dispose();
sqlcnn.Close();//关闭连接
sqlcnn.Dispose();//释放资源
return dt;
}
}
}
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.Configuration;
using System.Data.SqlClient;
namespace denglu1._0
{
public partial class Form1 : Form
{
string str = string.Empty;
int errorcount = 0;
public Form1()
{
InitializeComponent();
}
private void btn_login_Click(object sender, EventArgs e)
{
str = ConfigurationManager.ConnectionStrings["strcnn"].ConnectionString;
int sqlerror = GetError();//获取当期用户的登陆次数,以便进行比较
if (sqlerror >= 3)
{
DateTime errortime = GetErrorTime();
//Subtract函数减去指定时间,返回一个时间差,时间的格式可以是分钟也可以是秒、小时
TimeSpan span = DateTime.Now.Subtract(errortime);
double minute = span.TotalMinutes;//取时间间隔的分钟数
// double m = span.TotalSeconds;
if (minute < 2)
{
MessageBox.Show("您已经连续3次输入密码错误,系统已被锁定,请两分钟之后再次重试");
//后面的代码不执行
return;
}
else
{
errorcount = 0;
UpdateError(errorcount);
}
}
errorcount = GetError();
DataTable dt= GetDataTable();
if (dt .Rows .Count <=0)
{
errorcount++;
UpdateError(errorcount);
UpdateErrorTime();
MessageBox.Show("输入的用户名和密码不正确,请重新输入");
}
else if (dt.Rows.Count > 1)
{
MessageBox.Show("系统出现故障,请与管理员联系");
}
else
{//登陆成功后,错误次数清零
errorcount = 0;
UpdateError(errorcount );
MessageBox.Show("登陆成功");
}
}
//更改用户登陆错误的当前时间
private void UpdateErrorTime()
{
SqlConnection sqlcnn = new SqlConnection(str);
SqlCommand sqlcmm = new SqlCommand();
sqlcnn.Open();
sqlcmm.Connection = sqlcnn;
sqlcmm.CommandText = "update users set errortime=@errortime where username=@username";
sqlcmm.Parameters.AddWithValue("@errortime", DateTime.Now);
sqlcmm.Parameters.AddWithValue("@username", this.txt_name.Text);
sqlcmm.ExecuteNonQuery();
}
//获取当前用户错误登陆时的时间
private DateTime GetErrorTime()
{
SqlConnection sqlcnn = new SqlConnection(str);
SqlCommand sqlcmm = new SqlCommand();
sqlcnn.Open();
sqlcmm.Connection = sqlcnn;
sqlcmm.CommandText = "select errortime from users where username=@username";
sqlcmm.Parameters.AddWithValue("@username", this.txt_name.Text);
//返回一行一列
object obj = sqlcmm.ExecuteScalar();
return Convert.ToDateTime(obj);
}
//获取用户登陆的错误次数
private int GetError()
{
SqlConnection sqlcnn = new SqlConnection(str );
SqlCommand sqlcmm = new SqlCommand();
sqlcnn.Open();
sqlcmm.Connection = sqlcnn;
sqlcmm.CommandText = "select error from users where username=@username";
sqlcmm.Parameters.AddWithValue("@username",this .txt_name .Text );
object obj= sqlcmm.ExecuteScalar();
if (DBNull.Value.Equals(obj) == true)//判断下,若obj的值为空,则返回0
{
return 0;
}
else
{
return Convert.ToInt32(obj );
}
sqlcmm.Dispose();
sqlcnn.Close();
sqlcnn.Dispose();
}
//更改相应用户的登陆错误次数
private void UpdateError(int errorcount)
{
SqlConnection sqlcnn = new SqlConnection(str);
SqlCommand sqlcmm = new SqlCommand();
sqlcmm.Connection = sqlcnn;
sqlcnn.Open();
sqlcmm.CommandText = "update users set error=@error where username=@username";
sqlcmm.Parameters.AddWithValue("@error",errorcount );
sqlcmm.Parameters.AddWithValue("username",this .txt_name .Text );
sqlcmm.ExecuteNonQuery();
sqlcmm.Dispose();
sqlcnn.Close();
sqlcnn.Dispose();
}
//根据用户输入的用户和密码从数据库中查询相对应的数据集
private DataTable GetDataTable()
{
SqlConnection sqlcnn = new SqlConnection(str);
SqlCommand sqlcmm = new SqlCommand();
sqlcmm.Connection = sqlcnn;
sqlcmm.CommandText = "select * from users where username=@username and password=@pw";
sqlcmm.Parameters.AddWithValue("@username", this.txt_name.Text);
sqlcmm.Parameters.AddWithValue("@pw", this.txt_pw.Text);
SqlDataAdapter sda = new SqlDataAdapter(sqlcmm );
DataTable dt = new DataTable();
sda.Fill(dt );
sqlcmm.Dispose();
sqlcnn.Close();//关闭连接
sqlcnn.Dispose();//释放资源
return dt;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
⊙﹏⊙,开一个变量记录错误的次数就行了啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询