基于C#實(shí)現(xiàn)的三層架構(gòu)實(shí)例
本文所述為基于C#實(shí)現(xiàn)的三層架構(gòu)。對(duì)于三層的概念查相信大家并不陌生,這里舉一個(gè)關(guān)于三層的簡(jiǎn)單實(shí)例,真正看一下它是如何具體實(shí)現(xiàn)的.
我們先來一起看看實(shí)體類-Model
實(shí)質(zhì):實(shí)體類就是在完成數(shù)據(jù)庫(kù)與實(shí)體類對(duì)應(yīng)的功能,一個(gè)類是一張表,一個(gè)屬性是一個(gè)字段!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace model
{
public class User
{
public User() { }
private string _name;
public string name
{
set { _name = value; }
get { return _name; }
}
}
}
再來說明一下,這個(gè)實(shí)例應(yīng)用了配置文件來訪問數(shù)據(jù)庫(kù),當(dāng)然我們?cè)谧龅臅r(shí)候可以使用SqlHelper,也可以將連接數(shù)據(jù)庫(kù)的這些代碼直接放在D層
<add name="ConnectionString" connectionString="Data Source=localhost;Initial Catalog=tester;User ID=sa;Password=123456" providerName="System.Data.SqlClient" />
三層中的最底層-數(shù)據(jù)訪問層(DAL) 這一層要引用實(shí)體類和對(duì)Configuration的引用
實(shí)質(zhì):就是對(duì)數(shù)據(jù)庫(kù)中的內(nèi)容的增,刪,改,查
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using model;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
namespace DAL
{
public class UserDB
{
public bool User_add(model.User model)
{
string setting = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
SqlConnection myconn=new SqlConnection(setting);
myconn.Open();
SqlCommand cmd=new SqlCommand("insert into dbo.[user]([name]) values(@name)",myconn);
cmd.Parameters.AddWithValue("@name", model.name);
if (cmd.ExecuteNonQuery()>0)
{
return true;
}
else
{
return false;
}
}
}
}
三層中的橋梁-業(yè)務(wù)邏輯層BLL 這一層需要引用實(shí)體類和數(shù)據(jù)訪問層
實(shí)質(zhì):負(fù)責(zé)處理U層的問題(本例子主要是對(duì)數(shù)據(jù)層的操作)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
namespace BLL
{
public class userBLL
{
DAL.UserDB db = new UserDB();
public bool addUser(model.User model)
{
return db.User_add(model);
}
}
}
三層中的頂層-表現(xiàn)層UI 這一層要引用實(shí)體類和業(yè)務(wù)邏輯層
實(shí)質(zhì):具體解決做什么的問題
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BLL;
using model;
namespace 登陸
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
model.User thisUser = new User();
thisUser.name = TB_username.Text.ToString();
BLL.userBLL uB = new userBLL();
if (uB.addUser (thisUser))
{
MessageBox.Show ("true");
}
else
{
MessageBox.Show ("false");
}
}
}
}
三層之間的關(guān)系如下圖所示:

解釋:
上述代碼中DAL主要是對(duì)數(shù)據(jù)庫(kù)中的內(nèi)容的操作,在這里就是向數(shù)據(jù)庫(kù)中添加用戶。BLL則主要是調(diào)用DAL層的操作,返回DAL層添加用戶的結(jié)果(true或者false)。這樣也就是在客戶端與數(shù)據(jù)庫(kù)中加了一個(gè)中間層,使得兩層的依賴性減小。UI層則主要完成響應(yīng)用戶的需求,去調(diào)用BLL層實(shí)現(xiàn)的adduser方法,DAL層就是實(shí)實(shí)在在做這件事情的操作。
相關(guān)文章
C#利用win32 Api 修改本地系統(tǒng)時(shí)間、獲取硬盤序列號(hào)
這篇文章主要介紹了C#利用win32 Api 修改本地系統(tǒng)時(shí)間、獲取硬盤序列號(hào)的方法及代碼分享,需要的朋友可以參考下2015-03-03
C#窗口轉(zhuǎn)向方式(由一個(gè)窗口,跳轉(zhuǎn)到另一個(gè)窗口)
這篇文章主要介紹了C#窗口轉(zhuǎn)向方式(由一個(gè)窗口,跳轉(zhuǎn)到另一個(gè)窗口)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
C#連接Oracle數(shù)據(jù)庫(kù)的多種方法總結(jié)
最近小項(xiàng)目當(dāng)中要使用C#來連接Oracle數(shù)據(jù)庫(kù)來完成系統(tǒng)的操作,這篇文章主要給大家介紹了關(guān)于C#連接Oracle數(shù)據(jù)庫(kù)的多種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
C#實(shí)現(xiàn)按照指定長(zhǎng)度在數(shù)字前補(bǔ)0方法小結(jié)
這篇文章主要介紹了C#實(shí)現(xiàn)按照指定長(zhǎng)度在數(shù)字前補(bǔ)0方法,實(shí)例總結(jié)了兩個(gè)常用的數(shù)字補(bǔ)0的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
C#中靜態(tài)構(gòu)造函數(shù)的幾點(diǎn)說明介紹
本篇文章主要是對(duì)C#中靜態(tài)構(gòu)造函數(shù)的幾點(diǎn)說明進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-01-01

