三層登入—c#

來源:互聯網
上載者:User

標籤: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#

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.