生活随笔
收集整理的這篇文章主要介紹了
三层架构—实践篇(.Net登录实例)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、框架的搭建
U層引用Model層
B層引用Model層和DAL層
D層引用Model層和數據庫連接ImportsSystem.Data.SqlClient??
二、UML圖
1、類圖
U層:Windows1
B層:LoginUser
D層:UserDAO
Model層:UerEn
2、時序圖
3、包圖(設計模式在代碼中未體現,以后補充)
Link用來存儲連接字符串及SQL語句(以后補充)
三、代碼展示
1、實體類
[vb]?view plaincopy
<span?style="font-size:18px;">Public?Class?UserEn?? ?? ????Private?_userName?As?String?? ????Public?Property?UserName?As?String?? ????????Get?? ????????????Return?_userName?? ????????End?Get?? ?? ????????Set(ByVal?value?As?String)?? ???????????_userName?=?value?? ????????End?Set?? ????End?Property?? ?? ????Private?_password?As?String?? ????Public?Property?Password?As?String?? ????????Get?? ????????????Return?_password?? ????????End?Get?? ?? ????????Set(ByVal?value?As?String)?? ????????????_password?=?value?? ????????End?Set?? ????End?Property?? End?Class</span>??
2、U層
[vb]?view plaincopy
<span?style="font-size:18px;">Imports?Login.BLL????????????? Imports?Model?? Public?ClassStartWindow?? ?? ?????? ????Private?Sub?btnexit_Click(sender?As?Object,e?As?EventArgs)?Handles?btnexit.Click?? ????????End?? ????End?Sub?? ?????? ?? ????Private?Sub?btnOK_Click(sender?As?Object,?eAs?EventArgs)?Handles?btnOK.Click?? ????????Try?? ?? ????????????Dim?user1?As?New?UserEn??????????????????? ????????????Dim?check?As?New?LoginUser???????????????? ????????????Dim?user?As?Boolean?????????????????????? ?????????????? <span?style="font-size:18px;">????????????</span>user1.UserName?=txtUserName.Text.Trim?????? ????????????user1.Password?=txtPassword.Text???????????? ?? ????????????If?txtUserName.Text?=?""Then???????????????? ???????????????MessageBox.Show("請輸入用戶名!")?? ????????????End?If?? ?? ????????????If?txtPassword.Text?=?""Then????????????????? ???????????????MessageBox.Show("請輸入密碼!")?? ????????????End?If?? ????????????user?=?check.Login(user1)???????????????????? ????????????MessageBox.Show("成功登錄!")?? ????????Catch?ex?As?Exception????????????????????????????? ?? ????????????MsgBox(ex.Message)?? ????????End?Try?? ????End?Sub?? End?Class</span>??
3、B層
[vb]?view plaincopy
<span?style="font-size:18px;">Imports?Model?? Imports?Login.DAL?? ?? Public?ClassLoginUser?? ?? ????Function?Login(ByVal?user1?As?Model.UserEn)As?Boolean?? ????????Dim?Dal?As?New?UserDAO??????????????? ????????Dim?user2?As?Boolean?????????????????? ?? ????????user2?=?Dal.SelectUser(user1)???????? ?????????? ????????If?user2?Then?? ????????????Return?True?? ????????Else?? ????????????Throw?NewException("登錄失敗!")?? ????????????Exit?Function?? ????????End?If?? ????End?Function?? End?Class</span>??
4、D層
[vb]?view plaincopy
<span?style="font-size:18px;"><span?style="font-size:18px;">Imports?Model?? ImportsSystem.Data.SqlClient????????????? ImportsSystem.Data.SqlClient.SqlCommand?? Public?Class?UserDAO?? ?? ?????? ?????? ????Dim?connDB?As?String?="Server=.;Database=MyLogin;User?ID=sa;Password=123;"?? ????Dim?connSQL?As?SqlConnection?=?NewSqlConnection(connDB)?? ?? ????Function?SelectUser(ByVal?user1?AsModel.UserEn)?As?Boolean?? ?? ?????????? ?? ????????Dim?sql?As?String?=?"select?*?FromUserInfo?where?UserID=@UserName?AND?Password=@Password;"?? ????????Dim?cmd?As?SqlCommand?=?NewSqlCommand(sql,?connSQL)??????????? ?? ??? ?? ?????????? ?? ????????cmd.Parameters.Add(NewSqlParameter("@UserName",?user1.UserName))?? ????????cmd.Parameters.Add(NewSqlParameter("@Password",?user1.Password))?? ?? ?????????? ?? ????????connSQL.Open()?? ????????Dim?read?As?SqlDataReader?=cmd.ExecuteReader()?? ?? ?????????? ?? ????????If?read.Read()?Then?? ????????????Return?True?? ????????Else?? ????????????Return?False?? ????????????Exit?Function?? ????????End?If?? ????End?Function?? End?Class</span>?? </span>??
結果:
四、知識點小結
1、傳實體與傳參數區別
??????? 在參數較少的情況下,使用傳參比較方便;用的參數較多建議使用傳實體,效率較高
注意:如果在界面上顯示數據則設計到對實體的拆裝箱操作
例子:C#語言
[csharp]?view plaincopy
<span?style="font-size:18px;">?user.ID?=?reader.GetInt32(0);?? ?user.UserName?=?reader.GetString(1);?? ?user.Password?=?reader.GetString(2);?? ??if(!reader.IsDBNull(3))?? ?? ?{?? ???user.Email?=?reader.GetString(3);?? }</span>??
2、每層引用與單層Imports引用區別
層與層間引用:可以通過命名空間.類名,實現調用
層中Imports引用:直接寫調用的類名即可
3、實例化對象與定義同類型變量區別
newUserEn()是指在內存中開辟了一塊空間,創建了一個對象,然后讓一個UserEn類型的變量user引用(指向)它。user也只不過是創建的那個實體對象的名稱而已。
?
總結
以上是生活随笔為你收集整理的三层架构—实践篇(.Net登录实例)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。