程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 三層登錄—c#

三層登錄—c#

編輯:C#入門知識

三層登錄—c#


學習了三層,有一個登錄窗體的小練習,是我們第一次接觸三層的初戰。現在只是簡單的了解了一些,需要學習的還有很多,下面淺談自己的理解。

我們說的三層就是分層了顯示層、業務邏輯層和數據訪問層,其中顯示層是直接和客戶打交道的,是用戶的顯示界面;而業務邏輯層是處理業務的,是中間的橋梁,聯系著顯示層和數據訪問層,把用戶的請求進行分析處理,在給數據源寫入;那麼數據訪問層是做什麼的呢?主要操縱數據庫,對數據庫中的數據進行增刪改查的處理。這樣各個層次就有了自己特定的功能,達到了高內聚低耦合的效果。

這是一個簡單的登錄窗體的實現過程。

\

【顯示UI層】

 

<span style="font-family:KaiTi_GB2312;font-size:18px;">    private void btnOK_Click(object sender, EventArgs e)//登錄按鈕
        string UserName=txtUserName.Text.Trim ();//用戶名賦值給UserName
        string Password=txtPassWord .Text ;     //密碼賦值給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判斷用戶名和密碼
            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 UserName=@UserName AND Password=@Password";//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語句
              &nbsp;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層,主要是對數據庫的操作。

三層就是把一個系統分成部分,每個部分負責一定的職責,各盡其職,各司其守,不可越俎代!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved