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 作业_用户登录
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int maxerrortimes = 3;
private int intervalMinute = 2;
private void button1_Click(object sender, EventArgs e)
{
string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
SqlConnection conn = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select COUNT(username) from T_User where username=@username";
cmd.Parameters.Add(new SqlParameter("@username", this.txtusername.Text));
//cmd.Parameters.Add(new SqlParameter("@password", this.txtpassword.Text));
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
if (table.Rows.Count > 0)
{
cmd.Connection = conn;
cmd.CommandText = "SELECT Error,ErrorTime FROM T_User WHERE username='" + this.txtusername.Text + "'";
SqlDataAdapter ad = new SqlDataAdapter(cmd);
DataTable tb = new DataTable();
adapter.Fill(tb);
int errTimes = Convert.ToInt32(tb.Rows[0]["Error"]); //登陆失败的次数
if (errTimes == maxerrortimes) //已经达到允许登陆失败的最大次数
{
DateTime dtLast = Convert.ToDateTime(tb.Rows[0]["ErrorTime"]); //达到最大登陆次数的时间
TimeSpan ts1 = new TimeSpan(dtLast.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks); //当前时间
TimeSpan ts = ts2.Subtract(ts1).Duration();
if (ts.Minutes < this.intervalMinute) //登陆间隔时间小于规定的时间
{
MessageBox.Show("请" + this.intervalMinute + "分钟后再登陆!");
}
else //达到间隔时间后,清0的登陆失败次数,视其为第一次登陆
{
cmd.Connection = conn;
cmd.CommandText = "update T_User set errortime=getdate(),error=0 where username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
LoginLess(0);
}
}
else //登陆还未失败或失败次数小于最大次数
{
LoginLess(errTimes);
}
}
else
{
MessageBox.Show("用户不存在");
}
}
private void LoginLess(int tempErrorTimes)
{
string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
SqlConnection conn = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from T_User where username=@username and password=@password";
cmd.Parameters.Add(new SqlParameter("@username", this.txtusername.Text));
cmd.Parameters.Add(new SqlParameter("@password", this.txtpassword.Text));
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
if (table.Rows.Count <= 0)
{
if (tempErrorTimes == this.maxerrortimes - 1) //已经登陆失败最大次数
{
cmd.Connection = conn;
cmd.CommandText = "update T_User set errortime=getdate(),error=3 where username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("您已经连续登陆失败" + maxerrortimes.ToString() + "次,请" + this.intervalMinute + "分钟后再登陆!");
}
else //其它登陆失败次数
{
cmd.Connection = conn;
cmd.CommandText = "UPDATE T_User SET errortime = GETDATE(), Error = Error+1" + " WHERE username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("您已经连续登陆失败" + Convert.ToString(tempErrorTimes + 1) + "次,你还有" + Convert.ToString(this.maxerrortimes - tempErrorTimes - 1) + "次登陆机会");
}
}
else //登陆成功,将登陆错误次数清0
{
cmd.Connection = conn;
cmd.CommandText = "UPDATE T_User SET Error =0" + " WHERE username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("登陆成功!");
}
}
}
}
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 作业_用户登录
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int maxerrortimes = 3;
private int intervalMinute = 2;
private void button1_Click(object sender, EventArgs e)
{
string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
SqlConnection conn = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select COUNT(username) from T_User where username=@username";
cmd.Parameters.Add(new SqlParameter("@username", this.txtusername.Text));
//cmd.Parameters.Add(new SqlParameter("@password", this.txtpassword.Text));
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
if (table.Rows.Count > 0)
{
cmd.Connection = conn;
cmd.CommandText = "SELECT Error,ErrorTime FROM T_User WHERE username='" + this.txtusername.Text + "'";
SqlDataAdapter ad = new SqlDataAdapter(cmd);
DataTable tb = new DataTable();
adapter.Fill(tb);
int errTimes = Convert.ToInt32(tb.Rows[0]["Error"]); //登陆失败的次数
if (errTimes == maxerrortimes) //已经达到允许登陆失败的最大次数
{
DateTime dtLast = Convert.ToDateTime(tb.Rows[0]["ErrorTime"]); //达到最大登陆次数的时间
TimeSpan ts1 = new TimeSpan(dtLast.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks); //当前时间
TimeSpan ts = ts2.Subtract(ts1).Duration();
if (ts.Minutes < this.intervalMinute) //登陆间隔时间小于规定的时间
{
MessageBox.Show("请" + this.intervalMinute + "分钟后再登陆!");
}
else //达到间隔时间后,清0的登陆失败次数,视其为第一次登陆
{
cmd.Connection = conn;
cmd.CommandText = "update T_User set errortime=getdate(),error=0 where username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
LoginLess(0);
}
}
else //登陆还未失败或失败次数小于最大次数
{
LoginLess(errTimes);
}
}
else
{
MessageBox.Show("用户不存在");
}
}
private void LoginLess(int tempErrorTimes)
{
string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
SqlConnection conn = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from T_User where username=@username and password=@password";
cmd.Parameters.Add(new SqlParameter("@username", this.txtusername.Text));
cmd.Parameters.Add(new SqlParameter("@password", this.txtpassword.Text));
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
if (table.Rows.Count <= 0)
{
if (tempErrorTimes == this.maxerrortimes - 1) //已经登陆失败最大次数
{
cmd.Connection = conn;
cmd.CommandText = "update T_User set errortime=getdate(),error=3 where username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("您已经连续登陆失败" + maxerrortimes.ToString() + "次,请" + this.intervalMinute + "分钟后再登陆!");
}
else //其它登陆失败次数
{
cmd.Connection = conn;
cmd.CommandText = "UPDATE T_User SET errortime = GETDATE(), Error = Error+1" + " WHERE username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("您已经连续登陆失败" + Convert.ToString(tempErrorTimes + 1) + "次,你还有" + Convert.ToString(this.maxerrortimes - tempErrorTimes - 1) + "次登陆机会");
}
}
else //登陆成功,将登陆错误次数清0
{
cmd.Connection = conn;
cmd.CommandText = "UPDATE T_User SET Error =0" + " WHERE username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("登陆成功!");
}
}
}
}