如上图进行布局 登录按钮的事件: private const string CONNSTRING = @"Data Source=./SQLEXPRESS;AttachDBFilename=|DataDirectory|users.mdf;Integrated Security=True;User Instance=True"; private void incerrortimes() { using (SqlConnection conn = new SqlConnection(CONNSTRING)) { conn.Open(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "update users set errortimes=errortimes+1 where username=@un"; cmd.Parameters.AddWithValue("un", usernamebox.Text); cmd.ExecuteNonQuery(); } } private void reseterrortimes() { using (SqlConnection conn = new SqlConnection(CONNSTRING)) { conn.Open(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "update users set errortimes=0 where username=@un"; cmd.Parameters.AddWithValue("un", usernamebox.Text); cmd.ExecuteNonQuery(); } } private void button4_Click(object sender, EventArgs e) { using (SqlConnection conn = new SqlConnection(CONNSTRING)) { conn.Open(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "select * from users where username=@un"; cmd.Parameters.AddWithValue("un", usernamebox.Text); using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { int erreotimes = reader.GetInt32(reader.GetOrdinal("errortimes")); if (erreotimes > 3) { MessageBox.Show("登录错误次数过多!"); return; } string dbpassword = reader.GetString(reader.GetOrdinal("passwords")); if (dbpassword == passwordbox.Text) { reseterrortimes(); MessageBox.Show("登录成功"); labeltimes.Text = erreotimes.ToString(); } else { //把错误次数加1 incerrortimes(); MessageBox.Show("密码错误!"); labeltimes.Text = erreotimes.ToString(); } } else { MessageBox.Show("没有这个用户"); } } }