学习了三层,有一个登录窗口的小练习。是我们第一次接触三层的初战。如今仅仅是简单的了解了一些,须要学习的还有非常多,以下浅谈自己的理解。

我们说的三层就是分层了显示层、业务逻辑层和数据訪问层。当中显示层是直接和客户打交道的,是用户的显示界面;而业务逻辑层是处理业务的,是中间的桥梁。联系着显示层和数据訪问层,把用户的请求进行分析处理,在给数据源写入;那么数据訪问层是做什么的呢?主要操纵数据库,对数据库中的数据进行增删改查的处理。这样各个层次就有了自己特定的功能,达到了高内聚低耦合的效果。

这是一个简单的登录窗口的实现过程。

【显示UI层】

<span style="font-family:KaiTi_GB2312;font-size:18px;">    private void btnOK_Click(object sender, EventArgs e)//登录button
string UserName=txtUserName.Text.Trim ();//username赋值给UserName
string Password=txtPassWord .Text ; //password赋值给Password
Login<span style="color:#FF0000;">.<strong>BLL.LoginManager</strong></span> mgr = new Login.BLL.LoginManager();//实例化出BLL层中的LoginManager,两个引用的实现
Login.<span style="color:#333333;"><strong>Model.UserInfo</strong></span> user=mgr.UserLogin(UserName, Password);//调用BLL层中的方法UserLogin
MessageBox.Show("登录用户:" + user.UserName);</span>

【业务逻辑层BLL层】

<span style="font-family:KaiTi_GB2312;font-size:18px;">    public class  <span style="color:#FF0000;"><strong>LoginManager</strong></span>//调用BLL层中的LoginManager
{
public Login.Model.UserInfo <span style="color:#FF0000;"><strong>UserLogin</strong></span>(string UserName,string Password)
{
Login.<span style="color:#FF0000;"><strong>DAL.UserDAO</strong></span> uDao = new Login.DAL.UserDAO();//实例化DAL层中的UserADO
Login.<strong>Model.UserInfo</strong> user=uDao.SelectUser(UserName, Password);//在数据层DAL。调用方法SelectUser推断username和password
if (user!=null)
{
Login.DAL.ScoreDAO sDao = new Login.DAL.ScoreDAO();//实例出DAL层的ScoreDAO。对登录成功的用户进行加分操作
sDao.UpdateScore(UserName, 10);
return user;
}
else
{
throw new Exception("登录失败");
}
}
</span>

【数据訪问层DAL】

<span style="font-family:KaiTi_GB2312;font-size:18px;">public static string conString = @"Server=LFH;Database=LoginSanCeng;User ID=sa;Password=1";//链接数据库

public  Login.Model.UserInfo <span style="color:#FF0000;"><strong>SelectUser</strong></span>(string UserName,string Password)
{
using (SqlConnection conn = new SqlConnection(DBUtil.conString)) //通过參数DBUtil.conString打开连接数据
{
SqlCommand cmd = conn.CreateCommand();//创建cmd运行sql语句
cmd.CommandText = @"SELECT ID,UserName,Password,Emall FROM Users WHERE UserName=@UserName AND Password=@Password";//sql语句
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@UserName", UserName));//Parameters加入參数
cmd.Parameters.Add(new SqlParameter("@Password", Password));
conn.Open();//打开数据源
SqlDataReader reader = cmd.ExecuteReader();//读取数据而且得到结果 Login.Model.UserInfo user = null;
while (reader.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.Emall = reader.GetString(3);
}
}
return user;
}
}
} public void <span style="color:#FF0000;"><strong>UpdateScore</strong></span>(string UserName,int value)//更新分数操作
{
using (SqlConnection conn=new SqlConnection(DBUtil.conString ))//打开数据库链接
{
SqlCommand cmd = conn.CreateCommand ();//创建运行sql语句
cmd.CommandText = @"INSERT INTO SCORE(UserName,Score) Values(@UserName,@Score)";//sql语句
 cmd.Parameters.Add(new SqlParameter("@UserName", UserName));加入到数据库中
cmd.Parameters.Add(new SqlParameter("@Score", value));
//cmd.Parameters.Add(new SqlParameter("@ID", value));
conn.Open();打开数据库
cmd.ExecuteNonQuery();//运行sql语句,返回整数变量
}
}</span>

当中三层登录就是UI层引用BLL层的逻辑进行业务分析,BLL层引用DAL层进行数据推断,假设数据正确用户能够登录成功通过BLL层返回给UI层,UI显示给客户。Model层是封装数据的,提供给其它三个层次,它是独立的,不引用不论什么层的逻辑,甚至不知道其它层次的存在,仅仅是提供了服务,是最无私的。UI引用了BLL层和Model层,BLL层引用DAL和Model层。从而实现了UI层和DAL的间接联系,而DAL层引用了Model层,主要是对数据库的操作。

三层就是把一个系统分成部分,每一个部分负责一定的职责,各尽其职,各司其守。不可越俎代!

三层登录—c#的更多相关文章

  1. 三层登录实例VB.NET版详解---理论加实战篇

    层,百度百科这样解释,首先-重叠起来的东西:重叠起来的东西中的一部分:层次|表层|大气层.其次-重叠:重复:层峦叠嶂|层出不穷.最后-量词,用于可以分出层次的事物,女孩儿强烈的第六感,三层中的层一定是 ...

  2. 三层登录实例VB.NET版具体解释---理论加实战篇

    层,百度百科这样解释,首先-重叠起来的东西:重叠起来的东西中的一部分:层次|表层|大气层.其次-重叠.反复:层峦叠嶂|层出不穷.最后-量词,用于能够分出层次的事物.女孩儿强烈的第六感,三层中的层一定是 ...

  3. 三层登录——VB.NET版

    前言 由于下面的机房收费系统重构自己要用VB.NET进行重构,所以在敲三层登录的时候,实践了一份C#版三层登录,接着就是VB.NET版的三层登录.话说还有七层登录,一下子感觉三层又矮小了.万丈高楼平地 ...

  4. 三层登录——C#版

    前言 前期了解三层架构主要是由UI层.BLL层和DAL层三部分构成.看到大牛们都采用三层的思想实现了登录,本菜鸟暗暗地站在了他们的肩膀上. 自己理解 对于三层自己的理解是:就像我们对一个大型的公司去找 ...

  5. vb.net三层实现登录例子

    看三层已经很长时间了,中间有经过了期末考试.回家等等琐事,寒假开学的我已经回想不起什么事三层了,经过了三四天的重新复习,再加上查看各期师哥师姐的博客,终于,自己完成了C#视频中的登录小例子,下面就和大 ...

  6. winform学习日志(十九)----------真正三层架构之登录

    摘要:一:三层构架的基础知识在项目开发的过程中,有时把整个项目分为三层架构,其中包括:表示层(UI).业务逻辑层(BLL)和数据访问层(DAL).三层的作用分别如下: 表示层:为用户提供交互操作界面, ...

  7. C# 三层架构之系统的登录验证与添加数据的实现

    利用三层架构体系,实现学生管理系统中用户的登录与添加班级信息的功能,一下代码为具体实现步骤的拆分过程: 一.用户登录界面功能的实现 1.在数据访问层(LoginDAL)进行对数据库中数据的访问操作 u ...

  8. MVC+三层+ASP.NET简单登录验证

    通过制作一个登录小案例来搭建MVC简单三层 在View --Shared下创建一个母版页: <!DOCTYPE html> <html> <head> <me ...

  9. c#利用三层架构做一个简单的登录窗体

    就个人而言,三层架构有点难理解,不知道该如何下手,各层与各层之间怎么调用 最近一直在研究三层架构,经过网上学习与多方打听写一下自己的心得.有不足之处,可以评论和私聊探讨 言归正传: 三层架构(3-ti ...

随机推荐

  1. 【codeforces 501D】Misha and Permutations Summation

    [题目链接]:http://codeforces.com/problemset/problem/501/D [题意] 给你两个排列; 求出它们的字典序num1和num2; 然后让你求出第(num1+n ...

  2. TCL命令(事务控制)

     确认提交DML操作:commit;     撤销DML操作:rollback;         提示:rollback撤销的是与上一个commit之间          所做的DML操作.注意:仅对 ...

  3. 弹性ScrollView,和下啦刷新的效果相似 实现下拉弹回和上拉弹回

    今天做了一个弹性ScrollView,和下啦刷新的效果类似,我想这个非常多需求都用的这样的效果 事实上这是一个自己定义的scrollView,上代码.这是我写在一个公共的组件包里的 package c ...

  4. ubuntu 交叉编译qt 5.7 程序到 arm 开发板

    ubuntu 交叉编译qt 5.7 程序到 arm 开发板平台1 ubuntu 12.042 arm-linux-gcc 4.5.13 QT 5.74 开发板210 armcortex-A8 一 概述 ...

  5. php+mysql时报错:Unknown column '' in 'field list'解决方案

    答案来源:http://jingyan.baidu.com/article/9f7e7ec05c5ad76f281554ab.html 很多人在用php+MySQL做网站往数据库插入数据时发现如下错误 ...

  6. bzoj1797: [Ahoi2009]Mincut 最小割(最小割+强联通tarjan)

    1797: [Ahoi2009]Mincut 最小割 题目:传送门 题解: 感觉是一道肥肠好的题目. 第二问其实比第一问简单? 用残余网络跑强联通,流量大于0才访问. 那么如果两个点所属的联通分量分别 ...

  7. SSRS参数不能默认全选的解决方法

    解决方法选自<SQL Server 2008 R2 Reporting Services 报表服务>一书,亲测有效. 注意:参数默认值如果是字符串需要类型转换 =CStr("AL ...

  8. Photoshop CC (2015.5) 2016.6 版已发布

    Photoshop CC (2015.5) 2016.6 版已发布 adobe-cc-no-more-direct-download-links.html 不再有直接下载的升级包了,不开心 :( 下载 ...

  9. POJ 3320 Jessica's Reading Problem (尺取法,时间复杂度O(n logn))

    题目: 解法:定义左索引和右索引 1.先让右索引往右移,直到得到所有知识点为止: 2.然后让左索引向右移,直到刚刚能够得到所有知识点: 3.用右索引减去左索引更新答案,因为这是满足要求的子串. 4.不 ...

  10. VBA 中Dim含义

    楼主是个初学者,在应用vba时遇到了dim方面的问题,查了很多资料后想把关于dim的这点儿知识简单整理出来 首先,从我遇到的问题作为切入点吧, (不得不承认我遇到的错误是很低级的) 具体的情境就不还原 ...