Hello! 歡迎新老朋友來到這裡,這裡隨時恭候你的大駕。 接下來說說三層架構↓↓↓↓↓↓ 三層架構分為:表現層(UI(User Interface))、業務邏輯層(BLL(Business Logic Layer))、數據訪問層(DAL(Data Access Layer))再加上實體類庫(Mod ...
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年三月的最後一天