【三層登入之C#版】
前言
經歷了VB.NET之後,接下來的學習就是三層,三層的學習,讓我初步瞭解分層的思想。三層的學習,是視訊中老師通過具體的一個例項來講解的,講解的很是詳細的!通過總結,使得自己的思路更加清晰,也希望對大家有幫助
核心
(一)解決方案
解決方案,這讓我們一覽專案全域性,知道這個專案中有什麼?
(二)如何做
1.首先我們建起了自己的專案
2.之後把各層、層中的類建起來,這樣大致的三層框架就出來了
3.注意,新增引用,引用的作用是很重要的
4.開始敲程式碼
(三)程式碼模組
U層:LoginUI
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">private void btnLogin1_Click_1(object sender, EventArgs e)
{
string userName = txtUserName1.Text.Trim(); //將文字框中的姓名賦值給新的變數userName
string password = txtPassword1.Text;//同樣將文字框中的密碼賦值給新的變數password
Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();//例項化Login.BLL.LoginManager
Login .Model .UserInfo user= mgr.UserLogin(userName, password);//把U層的userName,password傳入實體中
MessageBox.Show("登入使用者:" + user.UserName);//提示框顯示此時的登入使用者
}</span></span></span>
B層:LoginBLL<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">namespace Login.BLL
{
public class LoginManager
{
public Login.Model.UserInfo UserLogin(string userName,string password)
{
Login .DAL .UserDAO uDao = new Login.DAL.UserDAO();//例項化Login.DAL.UserDAO
Login.Model.UserInfo user = uDao.SelectUser(userName, password);//把當前的userName, password傳給實體層
if (user !=null )//判斷使用者是否為空
{
Login.DAL.ScoreDAO sDao = new Login.DAL.ScoreDAO();//例項化Login.DAL.ScoreDAO
sDao.Update(userName, 10);//更新該使用者,給使用者加分
return user;
}
else
{
throw new Exception("登入失敗");//使用者為空,顯示登入失敗
}
}</span></span></span>
D層:LoginDAL
DbUtil類
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">namespace Login.DAL
{
public class DbUtil
{
public static string ConnString = @"Server=dujuan;Database=Login;User ID=sa;Password=sjk";
//連線資料庫,Server:計算機名
}
}</span></span></span>
userDAO類<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">namespace Login.DAL
{
public class UserDAO
{
public Login .Model .UserInfo SelectUser(string userName,string password)
{
//using後連線自動關閉
using ( SqlConnection conn=new SqlConnection (DbUtil .ConnString ))
{
SqlCommand cmd = conn.CreateCommand();//建立命令物件
cmd.CommandText = @"SELECT ID,UserName,Password,Email FROM USERS WHERE UserName=@UserName AND Password=@Password";
cmd .CommandType = CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@UserName", userName));
cmd.Parameters.Add(new SqlParameter("@Password", password));
conn.Open();//開啟連線
SqlDataReader reader = cmd.ExecuteReader();
Login.Model.UserInfo user = null;
while (reader .Read ())//讀取資料,呼叫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.Email = reader.GetString(3);
}
}
return user;//返回物件
}
}
}
}</span></span></span>
scoreDAO類<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">amespace Login.DAL
{
public class ScoreDAO
{
public void Update(string userName, int value)//更新
{
using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
{
SqlCommand cmd = conn.CreateCommand();//建立命令
cmd.CommandText = @"INSERT INTO SCORES(UserName,Score)Values(@UserName,@Score)";
cmd.Parameters.Add(new SqlParameter("@UserName", userName));
cmd.Parameters.Add(new SqlParameter("@Score", value));
conn.Open();//開啟連線
cmd.ExecuteNonQuery();//執行命令
}
}
}
}</span></span></span>
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">namespace Login.Model
{
public class UserInfo
{
public int ID { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
}
}</span></span></span>
(三)理解
三層:
UI層:介面層:主要是使用者看到的內容,主要作用,獲取文字框中的內容:使用者名稱和密碼,將獲取到的使用者名稱和密碼傳送給B層。 BLL層:
業務邏輯層:將U層傳送的資訊傳給DAL層,並接收D層返回來的查詢結果。將查詢結果和從U層傳遞來的資料進行比較。
DAL層:
DAL層:
資料訪問層:建立資料庫連線,在資料庫中查詢使用者名稱和密碼,將查到的結果返回給B層。最後,將結果返回給U層。
實體層:
封裝資料,在各層中間傳遞。實體層的宣告的變數與資料庫表是對應的,表中有多少內容,在實體層就宣告多少
三層之間的引用關係(包圖):
總結:
這只是剛剛開始,在下一篇部落格中,我們一起來學習三層的基本知識,瞭解是什麼?為什麼?鞏固基礎,添磚加瓦。
相關文章
- 三層登入——C#版C#
- 登入介面(C#)C#
- Android 第三方登入之新浪微博授權登入Android
- Laravel 第三方登入之微博Laravel
- C#七層登陸及程式碼展示C#
- SourceTree Mac版免登入版Mac
- C#分散式登入——jwtC#分散式JWT
- 第三方登入 (微博登入 web)Web
- C#模擬登入總結C#
- C# 網路程式設計之網頁自動登入 (一).使用WebBrower控制元件模仿登入C#程式設計網頁Web控制元件
- (三)神經網路入門之隱藏層設計神經網路
- 【三層學習之總結】
- 微信小程式登入頁動畫-雲層漂浮微信小程式動畫
- 三層登陸程式碼及錯誤集錦
- 聊聊“密碼登入”、“手機快捷登入”和“第三方聯合登入”密碼
- 網站 asp.net c# 接入QQ第三方登入的方法網站ASP.NETC#
- C#三種模擬自動登入和提交POST資訊的實現方法C#
- 小程式之登入態
- 友盟第三方登入精簡版QQ遇到的坑
- 微信網頁授權登入(c# Webform)網頁C#WebORM
- Laravel5.6 實現第三方登入 微信登入Laravel
- php實現第三方登入,百度第三方登入PHP
- 第三方登入原理
- 【網頁登入】QQ 登入、微信登入、微博登入、GitHub 登入網頁Github
- C#微信網頁授權登入(NET MVC)C#網頁MVC
- 傳引數與傳實體、返回實體與返表——三層架構登入例項架構
- 《C# 8.0和.NET Core 3.0高階程式設計(第4版)》之“C# 與 .NET 入門 ”C#程式設計
- C#使用Thrift作為RPC框架入門(三)之三層架構C#RPC框架架構
- Flutter入門篇(三)— 如何實現登入動畫效果Flutter動畫
- C#入門之C#特點及HelloWorld程式C#
- Laravel Passport 之api登入鑑權LaravelPassportAPI
- node爬蟲進階之——登入爬蟲
- Foursquare 原始碼研究之------登入續原始碼
- 模擬登入之web監控Web
- MFC 之使用者登入介面
- C#設計模式之代理模式(三)C#設計模式
- ubuntu登入時出現“一閃之後回到登入介面”的現象Ubuntu
- php使用第三方QQ登入PHP