標籤:bsp pass sel 學習 blog 分享 net data- object
學習了三層,有一個登入視窗的小練習。是我們第一次接觸三層的初戰。如今僅僅是簡單的瞭解了一些,須要學習的還有非常多,以下淺談自己的理解。
我們說的三層就是分層了顯示層、商務邏輯層和資料訪問層。當中顯示層是直接和客戶打交道的,是使用者的顯示介面;而商務邏輯層是處理業務的,是中間的橋樑。聯絡著顯示層和資料訪問層,把使用者的請求進行分析處理,在給資料來源寫入;那麼資料訪問層是做什麼的呢?主要操縱資料庫,對資料庫中的資料進行增刪改查的處理。這樣各個層次就有了自己特定的功能,達到了高內聚低耦合的效果。
這是一個簡單的登入視窗的實現過程。
【顯示UI層】
<span style="font-family:KaiTi_GB2312;font-size:18px;"> private void btnOK_Click(object sender, EventArgs e)//登入button string UserName=txtUserName.Text.Trim ();//username賦值給UserName string Password=txtPassWord .Text ; //password賦值給Password Login<span style="color:#FF0000;">.<strong>BLL.LoginManager</strong></span> mgr = new Login.BLL.LoginManager();//執行個體化出BLL層中的LoginManager,兩個引用的實現 Login.<span style="color:#333333;"><strong>Model.UserInfo</strong></span> user=mgr.UserLogin(UserName, Password);//調用BLL層中的方法UserLogin MessageBox.Show("登入使用者:" + user.UserName);</span>【商務邏輯層BLL層】
<span style="font-family:KaiTi_GB2312;font-size:18px;"> public class <span style="color:#FF0000;"><strong>LoginManager</strong></span>//調用BLL層中的LoginManager { public Login.Model.UserInfo <span style="color:#FF0000;"><strong>UserLogin</strong></span>(string UserName,string Password) { Login.<span style="color:#FF0000;"><strong>DAL.UserDAO</strong></span> uDao = new Login.DAL.UserDAO();//執行個體化DAL層中的UserADO Login.<strong>Model.UserInfo</strong> user=uDao.SelectUser(UserName, Password);//在資料層DAL。調用方法SelectUser推斷username和password if (user!=null) { Login.DAL.ScoreDAO sDao = new Login.DAL.ScoreDAO();//執行個體出DAL層的ScoreDAO。對登入成功的使用者進行加分操作 sDao.UpdateScore(UserName, 10); return user; } else { throw new Exception("登入失敗"); } }</span>【資料訪問層DAL】
<span style="font-family:KaiTi_GB2312;font-size:18px;">public static string conString = @"Server=LFH;Database=LoginSanCeng;User ID=sa;Password=1";//連結資料庫public Login.Model.UserInfo <span style="color:#FF0000;"><strong>SelectUser</strong></span>(string UserName,string Password) { using (SqlConnection conn = new SqlConnection(DBUtil.conString)) //通過參數DBUtil.conString開啟串連資料 { SqlCommand cmd = conn.CreateCommand();//建立cmd運行sql語句 cmd.CommandText = @"SELECT ID,UserName,Password,Emall FROM Users WHERE [email protected] AND [email protected]";//sql語句 cmd.CommandType = CommandType.Text; cmd.Parameters.Add(new SqlParameter("@UserName", UserName));//Parameters加入參數 cmd.Parameters.Add(new SqlParameter("@Password", Password)); conn.Open();//開啟資料來源 SqlDataReader reader = cmd.ExecuteReader();//讀取資料而且得到結果 Login.Model.UserInfo user = null; while (reader.Read ())//讀取資料 { if (user==null) { user = new Login.Model.UserInfo(); } user.ID = reader.GetInt32(0); user.UserName = reader.GetString(1); user.Password = reader.GetString(2); if (!reader.IsDBNull(3)) { user.Emall = reader.GetString(3); } } return user; } } }public void <span style="color:#FF0000;"><strong>UpdateScore</strong></span>(string UserName,int value)//更新分數操作 { using (SqlConnection conn=new SqlConnection(DBUtil.conString ))//開啟資料庫連結 { SqlCommand cmd = conn.CreateCommand ();//建立運行sql語句 cmd.CommandText = @"INSERT INTO SCORE(UserName,Score) Values(@UserName,@Score)";//sql語句 cmd.Parameters.Add(new SqlParameter("@UserName", UserName));加入到資料庫中 cmd.Parameters.Add(new SqlParameter("@Score", value)); //cmd.Parameters.Add(new SqlParameter("@ID", value)); conn.Open();開啟資料庫 cmd.ExecuteNonQuery();//運行sql語句,返回整數變數 } }</span>
當中三層登入就是UI層引用BLL層的邏輯進行業務分析,BLL層引用DAL層進行資料推斷,假設資料正確使用者能夠登入成功通過BLL層返回給UI層,UI顯示給客戶。Model層是封裝資料的,提供給其它三個層次,它是獨立的,不引用不論什麼層的邏輯,甚至不知道其它層次的存在,僅僅是提供了服務,是最無私的。UI引用了BLL層和Model層,BLL層引用DAL和Model層。從而實現了UI層和DAL的間接聯絡,而DAL層引用了Model層,主要是對資料庫的操作。
三層就是把一個系統分成部分,每一個部分負責一定的職責,各盡其職,各司其守。不可越俎代!
三層登入—c#