登陸界面的搭建仍是比較簡單的,雖然有點簡陋,但能用的姑且當作好的吧,以下圖:算法
這裏使用的是DevExpress控件,其中值得一看的就是使用LayoutControl控件來進行TextEdit控件的佈局。對於通常幾個TextEdit並排的佈局而言,使用這個控件的效果仍是不錯的。數據庫
既然涉及到了系統的登陸,那麼天然少不了數據庫的鏈接等操做了。這裏,我本身作的時候也很亂,爭取能表述的清楚一些。ide
首先,若是要訪問數據庫,那沒庫不行哈。那麼,就趕着手頭的東西,趕忙弄個庫出來吧。函數
數據庫建立與表設計佈局
具體流程就是:創立一個Access2007格式的數據庫文件,這裏名稱爲:BoardWages.accdb。別忘了給它建立個密碼,不過具體過程就略了,若是有和我同樣的小白,不要緊,咱稍微搜一下就OK了。而後再建立一個名爲tbUser的表,並創建字段,以下圖所示:學習
其中,ID字段爲自動編號;Name字段爲文本格式,保存用戶名;Password爲文本字段,保存密碼的MD5散列值。爲啥是MD5格式?由於這樣別人即便打開了你的數據庫也沒法看到真實的密碼!若是還有人問爲啥不能反推,那我也就不能解釋了……ui
MD5函數this
參考代碼:編碼
1 /// <summary> 2 /// MD5操做類 3 /// </summary> 4 public class MD5Hashing 5 { 6 /// <summary> 7 /// MD5加密算法 8 /// </summary> 9 /// <param name="input">要加密的字符串</param> 10 /// <param name="encode">編碼類型</param> 11 /// <returns></returns> 12 public static string MD5Encrypt(string input, Encoding encode) 13 { 14 MD5 md5 = new MD5CryptoServiceProvider(); 15 byte[] t = md5.ComputeHash(encode.GetBytes(input)); 16 StringBuilder sb = new StringBuilder(32); 17 for (int i = 0; i < t.Length; i++) 18 { 19 sb.Append(t[i].ToString("x").PadLeft(2, '0')); 20 } 21 return sb.ToString(); 22 } 23 }
好了,說完數據庫,繼續說數據庫訪問的事。最先,本身學習的時候,學了ODBC,還有OLEDB,再以後的ado.net,直接寫SQL代碼,對於不少像我這樣的小白而言,是很容易出錯的,因此,各位大大們,就弄出了不少的ORM組件,解決了小白們的問題。這裏,我使用的是秋大的CYQ.Data,由於這個接觸的多,用慣了,也確實很好用。仍是老規矩,先把代碼貼上再慢慢說:加密
1 // 使用自定義的方法,利用Validate組件進行驗證 2 // 但要注意的是,須要把控件的tag屬性進行設置 3 if (MyValidator.IsEmpty(txtName,txtPassword) == false) 4 { 5 return; 6 } 7 8 // 驗證沒問題以後,獲取控件內的用戶名和密碼 9 string name = txtName.Text.Trim(); // 用戶名 10 string password = txtPassword.Text.Trim(); // 密碼 11 12 // 在數據庫中進行查詢 13 using (MAction action = new MAction(tbUser, MyAPPConfig.LocalConn)) 14 { 15 if (!action.Exists("Name = '" + name + "'")) // 是否存在用戶名? 16 { 17 CShowMsg.ShowWarning(string.Format("用戶名'{0}'不存在",name)); 18 return; 19 } 20 else 21 { 22 // 對密碼進行MD5加密,再進行判斷 23 string md5Password = MD5Hashing.MD5Encrypt(password, Encoding.UTF8); 24 string where = string.Format("Name = '{0}' and Password = '{1}'",name,md5Password); 25 if (!action.Exists(where)) 26 { 27 CShowMsg.ShowWarning("用戶名或者密碼不正確!"); 28 return; 29 } 30 else 31 { 32 // 這一句,就能夠關閉當前的頁面了。由於在Program中進行了處理。 33 this.DialogResult = System.Windows.Forms.DialogResult.OK; 34 } 35 } 36 }
注意了,包含在using中的代碼就是使用CYQ.Data的具體代碼了,這裏先查看是否存在用戶名,再查看是否存在用戶名和密碼都存在的記錄。代碼是下午寫的,如今感受,這裏重複了,直接進行第二組判斷應該就能夠了。其中,把判斷條件添加進去,這裏我使用的是string.Format方法來組成了字符串來當作查詢條件。具體的CYQ.Data怎麼用,我想沒有比秋大的博客更好的地方了,你們能夠自行搜索。
須要更多說明的有三個地方:
一、MyAPPConfig.LocalConn 是本身定義的Access的鏈接字符串,這裏是:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.\Data\BoardWages.accdb;Persist Security Info=True;Jet OLEDB:Database Password=boardwages!2019
二、CShowMsg.ShowWarning 是自定義的一個輸出方法,其實就是對於 MessageBox.Show方法的一個封裝而已。
三、MyValidator.IsEmpty也是自定義的一個方法,目的是判斷指定的控件是否內容爲空,若是是,會有相應的提示,例如:
這裏涉及到了FluentValidation驗證組件的使用,回頭須要專門的用一章來講明。
小結:好了,下午大概就作了這些內容,最後就是在數據庫中手動添加一條記錄,而後本身在登陸界面中,使用正確的用戶名和密碼進行登陸,看是否可以登陸成功以驗證咱們數據訪問組件使用的是否正確。寫的比較倉促,有問題的地方,你們多多批評指正。