首页 > 编程知识 正文

b级车,化学元素

时间:2023-05-04 15:03:21 阅读:112941 作者:242

C#_三层体系结构三层体系结构详情:

除了表示层(UI )、业务逻辑层(BLL )、数据访问层(DAL )之外,还添加实体类库(Model )

表现层(UI )一般是表单的设计和网页的设计,是一眼就能看到的界面。

逻辑判断业务逻辑层(BLL )传输数据并进行分支,传输正确的值。

数据访问层(DAL )主要存储对数据类的访问,即添加、删除、修改、更新数据库等基本操作。

实体类库(Model ) :主要存储数据库中的表字段。

说到这个,大家可能还有点摸不着头脑! 写个例子就知道了!

chdzs,上例:

总体思路是:用户输入账户密码-点击登录-进入bll层进行输入和数据逻辑处理的DAL层实现bll层逻辑(将用户输入的账户密码与数据库匹配)

首先建立数据库。 不太需要字段、id、帐户名和密码

数据库名称: threelayer

表名: Tb_User

字段: id用户名称用户用户pwd

做个新项目吧。 设计一个超简单的表单。 是两个lable、两个textbox和一个button。

将APP应用程序配置文件添加到此项目中。

更改配置文件实际上是连接到数据库的字符串。 XML版本=' 1.0 '编码=' utf-8 '? 配置连接stringsaddname=' db连接' connectionstring=' data source=. Initial Catalog=threelayer; 永久安全信息=true; 用户id=sa; password=123 ' providername=' sqlclient '//connection strings/configuration附加类库: BLL、DAL、Model

右键单击项目解决方案-添加-新建项目-类库

积分来了,积分来了,积分来了。 说三次重要的话。 我之前说过,模型层在做什么? 主要存储数据库的表字段,但遇到问题该怎么办呢?

此Model类库下新的类名userinfo.cs privatestring _ username; 私有string _ PSW; 公共字符串用户名称{ set { _ username=value; } get { return _username; }公共字符串PSW { set { _ PSW=value; } get { return _psw; }完整代码:

用户系统; using system.collections.generic; using System.Linq; using System.Text; namespace model {公共类用户权限} privatestring _ username; 私有string _ PSW; 公共字符串用户名称{ set { _ username=value; } get { return _username; }公共字符串PSW { set { _ PSW=value; } get { return _psw; } }接下来是DAL层。 主要存储对数据类的访问,即添加、删除、修改和更新数据库等基本操作。

首先添加system.configuration引用,以便类可以读取配置文件节点并读取配置文件中的连接数据库语句。 右键单击-添加引用-选择程序集-检查-确定

添加DBbase类。 这个班是人们常说的一个叫SqlHelper的班,名字是随心所欲的吧。

using System.Data;

using System.Data.SqlClient;

添加这两个引用。

用户系统; using system.collections.generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; namespacedal { public class dbbase }//读取配置文件连接数据库语句public static string strCon

= System.Configuration.ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString; //实例化连接对象 con SqlConnection con = new SqlConnection(strCon); //检测连接是否打开 public void chkConnection() { if (this.con.State == ConnectionState.Closed) { this.con.Open(); } } //执行语句,返回该语句查询的数据行的总数 public int returnRowCount(string strSQL) { chkConnection(); try { SqlDataAdapter da = new SqlDataAdapter(strSQL, con); DataSet ds = new DataSet(); da.Fill(ds); return ds.Tables[0].Rows.Count; } catch { return 0; } } }} 添加 userAccess类(右键DAL项目-添加-新建项-命名好-确定) 用执行查询语句查找用户输入账号密码在数据库中存在记录条数
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DAL{ public class userAccess { //实例化DBbase 对象 DBbase db = new DBbase(); //用户登录的方法 public int userLogin(string name, string psw) { string strsql = "select * from Tb_User where username = '" + name + "' and userpwd = '" + psw + "'"; return db.returnRowCount(strsql); } }}

查询语句,返回对应的行数。
9. BLL层:对传送数据进行逻辑判断分折,并进行传送正确的值。
在BLL层中添加用户输入数据与数据库匹配的逻辑代码
实例化DAL.userAccess 类,并新建一个方法调用DAL.userAccess方法,参数为Model实体类中的useInfo类
完整代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace BLL{ public class userAccess { DAL.userAccess d_userAccess = new DAL.userAccess(); public int userLogin(Model.userInfo m_userInfo) { return d_userAccess.userLogin(m_userInfo.username, m_userInfo.psw); } }} 接下来就是窗体代码了
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;namespace ThreeLayer{ public partial class Login : Form { //实例化model层中 userInfo类用于传递数据 Model.userInfo m_userInfo = new Model.userInfo(); //实例化BLL层中 userAccess方法衔接用户输入与数据库匹配 BLL.userAccess b_userAccess = new BLL.userAccess(); public Login() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //将用户输入的账号密码 赋值给userInfo类 username、psw属性 m_userInfo.username = textBox1.Text.Trim().ToString(); m_userInfo.psw = textBox2.Text.Trim().ToString(); //如果BLL层中 useLogin调用返回记录条数 大于1 则账号密码正确 if (b_userAccess.userLogin(m_userInfo) > 0) { MessageBox.Show("登录成功"); } else { MessageBox.Show("登录失败"); } } }}

运行调试,发现报错了,这是为什么呢?一起来看看。


这是我们没有在项目中引用,解决如下:

添加引用就行了。

运行调试。

总结:

三层架构最重要的是中间的引用,这点只要做错了就要重新搭建,所以务必要小心一点。下面是三层的关系。

DAL引用Model

BLL引用DAL和Model

UI层引用BLL和Model




运用三层架知构可以让代码的可读性和功能的扩展性有着很好的提高
个人认为,一般我们说的三层甚至多层架构,是根据一定的分层原则,把一个应用分层处理,每层完成各自的工作,相互之间相对独立。
比如:有一个应用,我们分为界面层道,逻辑内层,数据层,那么这三层分管不同的处理,界面层主要完成与用户的交互;逻辑层完成商业逻辑运算;数据层完成数据存储等。
这样做的好处是方便维护。例如:我们把界面层提供给用户使用,逻辑运算放到远程服务器上,当我们需要调整运算逻辑的时候,只需要调整逻辑层就可以了,在用户那边根本感觉不到改动,也省去了重新部署的麻烦容。

大家如果看的不太明白,在登录按钮那个地方打上一个断点,跟着他一步一步的跳,就会明白怎么运行的了。

喜欢就点个关注呗!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。