1. 程式人生 > >三層架構下實現使用者登陸C#

三層架構下實現使用者登陸C#

   上篇文章講到三層。接下來就通過一個例項具體的看怎麼用三層實現使用者登陸介面。

  一、Model實體(LoginModel):
         

namespace LoginModel
{
     //新增類:UserInfo  Model實體作用:封裝資料,使資料在三層中傳輸 ,更傾向於業務邏輯層
    public class UserInfo
    {
        //定義使用者屬性
        public int ID { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        
    }
}
二、UI層的設計:

 首先簡單的介面相信大家都會:

接下來是程式碼:

namespace LoginUI
{
    public partial class frmLogin : Form
    {
        public frmLogin()
        {
            InitializeComponent();
        }
        private void btnLogin_Click(object sender, EventArgs e)
        {
            //UI層將使用者輸入資料傳遞給BLL層
            string userName = txtUserName.Text.Trim();
            string password = txtPassword.Text;
            LoginBLL.LoginManager mgr = new LoginBLL.LoginManager();
            LoginModel.UserInfo user = mgr.UserLogin(userName, password);

            //將UI層返回業務層傳遞的資料給使用者
            MessageBox.Show("登陸使用者:" + user.UserName);
        }       
    }
}

三、BLL層程式碼
namespace LoginBLL
{
    public class LoginManager
    {
        public LoginModel.UserInfo UserLogin(string userName, string password)
        {
            LoginDAL.UserDAO uDao = new LoginDAL.UserDAO();//例項化DAL層
            LoginModel.UserInfo user = uDao.SelectUser(userName, password);

            //不需訪問資料來源直接執行業務邏輯
            if (user != null)
            {
                return user;
            }
            else
            {
                throw new Exception("登陸失敗");                
            }
        }
    }
}
四、DAL層  程式碼
 public class UserDAO
    {
        public LoginModel.UserInfo SelectUser(string userName, string Password)
        {
            
            //建立資料庫連線
            string ConnString = @"Server=192.168.24.154;DataBase=機房收費系統人員記錄; User ID=sa; Password=123";
            using (SqlConnection conn = new SqlConnection(ConnString))
            {
                //執行SQL語句進行查詢
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = @"SELECT ID,UserName,Password FROM UserInfo WHERE [email protected] AND [email protected]";
                //輸出查詢結果
                cmd.CommandType = CommandType.Text;

                //新增兩個引數
                cmd.Parameters.Add(new SqlParameter(@"UserName", userName));
                cmd.Parameters.Add(new SqlParameter(@"Password", Password));

                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();

                LoginModel.UserInfo user = null;

                //讀取具體的資料
                while (reader.Read())
                {
                    if (user == null)
                    {
                        user = new LoginModel.UserInfo();
                    }
                    //讀取查詢到的資料
                    user.ID = reader.GetInt32(0);
                    user.UserName = reader.GetString(1);
                    user.Password = reader.GetString(2);
                   
                }
                return user;
            }
        }
    }
}


登陸:

結果顯示: