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

C# 分層 三層架構 Very Very Good!,

編輯:C#入門知識

C# 分層 三層架構 Very Very Good!,


Hello! 歡迎新老朋友來到這裡,這裡隨時恭候你的大駕。

接下來說說三層架構

三層架構分為:表現層(UI(User Interface))、業務邏輯層(BLL(Business Logic Layer))、數據訪問層(DAL(Data Access Layer))再加上實體類庫(Model)

1、實體類庫(Model),主要存放數據庫中的表字段。

操作:

(1)先建立實體類庫Model,打開項目,在解決方案中右鍵——>添加——>新建項目——>選中類庫——>改名Model——>確定

(2)選中Model類庫——>Shift+ALT+C——>建立實體類。UserInfo類

1 namespace Model
2 {
3    public  class UserInfo
4     {
5         public string  UserName { get; set; }
6         public string  Password { get; set; }
7     }
8 }

2、數據訪問層(DAL),主要是存放對數據類的訪問,即對數據庫的添加、刪除、修改、更新等基本操作

 

操作:

 

(1)先建立數據訪問層類庫DAL,打開項目,在解決方案中右鍵——>添加——>新建項目——>選中類庫——>改名DAL——>確定

(2)在DAL中添加對Model的引用,選中DAL--》Alt+P+R--》解決方案--》項目--》選中MOdel--》確定

(3)在DAL中添加對system.configuration的引用,選中DAL——>Alt+P+R——>程序集——>框架——>選中System.configuration——>確定

(4)建立數據訪問類,選中DAL——>Shift+ALT+C——>建立數據訪問類。UserDB類

 1 namespace DAL
 2 {
 3     class UserDB
 4     {
 5         private string connString = ConfigurationManager.ConnectionStrings[connString].ToString();
 6         public int AddUser(UserInfo userInfo)
 7         {
 8             //對數據庫進添加一個用戶操作
 9             string commandText = insert into UserInfo (userName,Password)values(@userName,@Password);
10             SqlParameter[] paras = new SqlParameter[]
11             { 
12            new SqlParameter (@userName,userInfo.UserName ),
13            new SqlParameter (@Password,userInfo.Password )
14             };
15             return SqlHelper.ExecuteNonQuery(connString, CommandType.Text, commandText, paras);
16         }
17     }

3、業務邏輯層(BLL)對傳送數據進行邏輯判斷分折,並進行傳送正確的值。

 

 

(1)先建立業務邏輯層類庫BLL,打開項目,在解決方案中右鍵——>添加——>新建項目——>選中類庫——>改名BLL——>確定

(2)在BLL中添加對Model、DAL的引用,選中BLL——>Alt+P+R——>解決方案——>項目——>選中MOdel、DAL——>確定

(3)建立業務邏輯類,選中BLL——>Shift+ALT+C——>建立業務邏輯類。LoginManager類

 1 namespace BLL
 2 {
 3     public class LoginManager
 4     {
 5         private UserDB userDB = new UserDB();
 6         public bool Add(UserInfo userInfo, out string messageStr)
 7         {
 8             messageStr = ;//返回界面層添加用戶返回信息
 9             bool isSuccess = false;
10             if (userInfo.UserName.Trim().Length != 0)//判斷從傳遞來的username是否為空
11             {
12                 if (userDB.IsEquals(userInfo))//傳給DALl操作判斷數據庫中是否有重復值
13                 {
14                     userDB.AddUser(userInfo);//傳給DAL操作增加一個新用戶
15                     isSuccess = true;
16                 }
17                 else
18                     messageStr = 有相同的值;
19             }
20             else
21             {
22                 messageStr = 不能為空;
23  
24             }
25             return isSuccess;//返回界面層是否添加成功
26         }
27     }
28 }

4.表現層(UI)即用戶界面層

 

(1)在UI中添加對Model、BLL的引用,選中UI--》Alt+P+R--》解決方案--》項目--》選中MOdel、BLL--》確定

(2)編寫代碼傳遞數據給BLL層。

 1  UserInfo userInfo;
 2     LoginManager lm = new LoginManager();
 3     private void btnAdd_Click(object sender, EventArgs e)
 4     {
 5         userInfo = new UserInfo()
 6         {
 7             UserName = txtUserName.Text.Trim(),
 8             Password = txtPassword.Text.Trim()
 9         };
10         string messageStr = ;
11  
12         if (lm.Add(userInfo, out  messageStr))
13         {
14             MessageBox.Show(添加成功);
15         }
16         else
17         {
18             MessageBox.Show(messageStr);
19             txtUserName.Focus();
20         }
21  
22     }
23 }

 

再來說一下怎麼實現如下圖所示   三個表的信息顯示在一個控件

想要實現下圖內容  ,  首先要從學生表(Student)、從科目表(Subject)、從成績表(StudentResult)分別拿到學生姓名、科目名、考試成績和考試時間。

首先添加一個擴展類,這裡要用到繼承

namespace Combox.Model
{
   public class StudentExtens:Student
    {
        public string SubjectName { get; set; }
        public int StudentResult { get; set; }
        public DateTime ExamDate { get; set; }
    }
}

繼續DAL層

 

 1 public List<StudentExtens> SelectStudentResult() 
 2         {
 3             //查看學生成績
 4             List<StudentExtens> list = new List<StudentExtens>();
 5             SqlConnection con = new SqlConnection("Server=192.168.15.21;initial catalog=MySchool;uid=sa;");
 6             DataTable dt = SQLHelper.ExecuteDataTable(@"select studentname,subjectname,studentresult,examdate from student,subject,result where student.studentno=result.studentno and result.subjectid=subject.subjectid");
 7             foreach (DataRow item in dt.Rows)
 8             {
 9                 StudentExtens se = new StudentExtens();
10                 se.StudentName = item["studentname"].ToString();
11                 se.SubjectName = item["subjectname"].ToString();
12                 se.StudentResult = Convert.ToInt32(item["studentresult"]);
13                 se.ExamDate = Convert.ToDateTime(item["examdate"]);
14                 list.Add(se);
15             }
16             return list;
17         }

接下來是BLL層

 1 namespace Combox.BLL
 2 {
 3    public class StudentBLL
 4     {
 5        StudentDAL sd = new StudentDAL();
 6        public List<StudentExtens> SelectStudentResult()
 7        {
 8           return sd.SelectStudentResult();
 9        }
10     }
11 }

在UI進行調用

1            StudentBLL sb = new StudentBLL();
2            List<StudentExtens> list = sb.SelectStudentResult();
3            dgvlist.DataSource = list;

 

 

親們!到這裡分層先告一段落。 感謝關注過我、正在關注我、將要關注我的朋友。一起努力加油!

     在這個弱肉強食的時代我們只能:

               狼行千裡吃肉!公司裡一個團隊的作戰能力決定你分的肉多少。

    十年、二十年以後的你,會回想起現在的你。至於那個時候的你,是否會感謝現在坐在電腦屏幕前的你,答案就在我們每一天裡!

                                                                                   愛編碼愛生活愛音樂愛文字愛小M

                                                                                                   16年三月的最後一天

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