C# winform實(shí)現(xiàn)登陸次數(shù)限制
我們?cè)诰W(wǎng)上登陸的時(shí)候有些網(wǎng)站在用戶(hù)多次輸錯(cuò)密碼之后會(huì)自動(dòng)把賬戶(hù)凍結(jié),不能在進(jìn)行登陸,小編這次做的winform程序就是要實(shí)現(xiàn)這種功能,具體內(nèi)容如下
功能一:根據(jù)數(shù)據(jù)庫(kù)字段判斷用戶(hù)名和密碼是否匹配;
功能二:如果輸入錯(cuò)誤自動(dòng)記錄連續(xù)錯(cuò)誤次數(shù);
功能三:如果用戶(hù)登陸成功之后會(huì)自動(dòng)清除錯(cuò)誤次數(shù),使用戶(hù)仍然可以連續(xù)登陸3次;
首先在winform窗體上拖入兩個(gè)label和textbox,textbox分別命名為txbUserName,txbPassWord;然后在拖入一個(gè)button按鈕;雙擊button按鈕寫(xiě)按鈕事件,代碼如下:
private void button1_Click(object sender, EventArgs e) { using (SqlConnection con = new SqlConnection("server=.; database=text; integrated security=SSPI;")) { using (SqlCommand com = new SqlCommand()) { com.CommandText = "select * from T_Users where UserName=@username"; com.Connection = con; con.Open(); com.Parameters.Add(new SqlParameter("username", txbUserName.Text)); //com.Parameters.Add(new SqlParameter("password", textBox2.Text)); using (SqlDataReader read = com.ExecuteReader()) { if (read.Read()) { int errortimes = read.GetInt32(read.GetOrdinal("ErrorTimes")); //讀取錯(cuò)誤登陸次數(shù) if (errortimes >= 3) //判斷錯(cuò)誤次數(shù)是否大于等于三 { MessageBox.Show("sorry 你已經(jīng)不能再登陸了!"); } else { string passwored = read.GetString(read.GetOrdinal("PassWord")); if (passwored == txbPassWord.Text) { MessageBox.Show("登陸成功!"); this.qingling(); //登陸成功把錯(cuò)誤登陸次數(shù)清零 } else { MessageBox.Show("登陸失?。?); this.leiji(); //登陸失敗把錯(cuò)誤登陸次數(shù)加一 } } } } } } }
累加錯(cuò)誤登陸次數(shù)函數(shù):
public void leiji() { using (SqlConnection con = new SqlConnection("server=.; database=text; integrated security=SSPI;")) { using (SqlCommand com = new SqlCommand()) { com.Connection = con; com.CommandText = "update T_Users set ErrorTimes=ErrorTimes+1 where UserName=@username"; com.Parameters.Add(new SqlParameter("username", txbUserName.Text)); con.Open(); com.ExecuteNonQuery(); } } }
清零錯(cuò)誤登陸次數(shù)函數(shù):
public void qingling() { using (SqlConnection con = new SqlConnection("server=.; database=text; integrated security=SSPI;")) { using (SqlCommand com = new SqlCommand()) { com.Connection = con; com.CommandText = "update T_Users set ErrorTimes=0 where UserName=@username"; com.Parameters.Add(new SqlParameter("username", txbUserName.Text)); con.Open(); com.ExecuteNonQuery(); } } }
在button事件的代碼中小編使用了using,關(guān)于using的用法與好處在《談C# using的用法與好處》中已經(jīng)寫(xiě)過(guò)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
- Oracle 添加用戶(hù)并賦權(quán),修改密碼,解鎖,刪除用戶(hù)的方法
- Oracle新建用戶(hù)、角色,授權(quán),建表空間的sql語(yǔ)句
- [Oracle] 如何使用觸發(fā)器實(shí)現(xiàn)IP限制用戶(hù)登錄
- Zend Framework框架的session會(huì)話周期及次數(shù)限制使用示例
- perl腳本實(shí)現(xiàn)限制ssh最大登錄次數(shù)(支持白名單)
- ORACLE 10G修改字符編碼沒(méi)有超字符集的限制
- javascript Deferred和遞歸次數(shù)限制實(shí)例
- Java用Cookie限制點(diǎn)贊次數(shù)(簡(jiǎn)版)
- java發(fā)送短信系列之限制日發(fā)送次數(shù)
- Oracle用戶(hù)連續(xù)登錄失敗次數(shù)限制如何取消
相關(guān)文章
C#實(shí)現(xiàn)文字轉(zhuǎn)語(yǔ)音功能
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)文字轉(zhuǎn)語(yǔ)音功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C#中decimal保留2位有效小數(shù)的實(shí)現(xiàn)方法
這篇文章主要介紹了C#中decimal保留2位有效小數(shù)的實(shí)現(xiàn)方法,針對(duì)decimal變量保留2位有效小數(shù)有多種方法,可以使用Math.Round方法以及ToString先轉(zhuǎn)換為字符串等操作來(lái)實(shí)現(xiàn)。具體實(shí)現(xiàn)方法感興趣的朋友跟隨小編一起看看吧2019-10-10c# 配置文件App.config操作類(lèi)庫(kù)的方法
下面小編就為大家?guī)?lái)一篇c# 配置文件App.config操作類(lèi)庫(kù)的方法。小編覺(jué)的挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12C#里SuperSocket庫(kù)不能發(fā)現(xiàn)命令的原因
這篇文章主要介紹C#里SuperSocket庫(kù)不能發(fā)現(xiàn)命令的原因,在使用SuperSocket來(lái)寫(xiě)服務(wù)器的過(guò)程中,這是一個(gè)非??焖俚拈_(kāi)發(fā)方式,也非常好用。不過(guò)學(xué)習(xí)的曲線有點(diǎn)高,在使用的過(guò)程中經(jīng)常會(huì)遇到各種各樣的問(wèn)題。下面來(lái)看看學(xué)習(xí)舉例說(shuō)明吧2021-10-10C# 16 進(jìn)制字符串轉(zhuǎn) int的方法
這篇文章主要介紹了C# 16 進(jìn)制字符串轉(zhuǎn) int的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04深入多線程之:深入生產(chǎn)者、消費(fèi)者隊(duì)列分析
本篇文章是對(duì)生產(chǎn)者與消費(fèi)者隊(duì)列進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05WinForm中變Enter鍵為T(mén)ab鍵實(shí)現(xiàn)焦點(diǎn)轉(zhuǎn)移的方法
這篇文章主要介紹了WinForm中變Enter鍵為T(mén)ab鍵實(shí)現(xiàn)焦點(diǎn)轉(zhuǎn)移的方法,主要通過(guò)一個(gè)ControlTools類(lèi)來(lái)實(shí)現(xiàn)該功能,需要的朋友可以參考下2014-08-08