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

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

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

【显示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. CORS与JSONP的区别

    CORS与JSONP: a. JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求. b. 使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSON ...

  2. CSS隐藏overflow默认滚动条同时保留滚动效果

    主要应用于移动端场景,仿移动端滚动效果.对于隐藏滚动条,众所周知overflow:hidden,但是想要的滚动效果也没了. 所以对于移动端webkit内核提供一个伪类选择器: .element::-w ...

  3. iOS UI16_数据持久化

    // // Student.h // UI16_数据持久化 // // Created by dllo on 15/8/19. // Copyright (c) 2015年 zhozhicheng. ...

  4. C. Amr and Chemistry(Codeforces Round #312 (Div. 2) 二进制+暴力)

    C. Amr and Chemistry time limit per test 1 second memory limit per test 256 megabytes input standard ...

  5. [Hyperapp] Render Text with JSX in Hyperapp

    Hyperapp is an ultra lightweight (1kb), minimal, functional, JavaScript library for building UIs. It ...

  6. codevs 3372 选学霸(hash+并查集+多重背包)

    先通过并查集处理出来有多少种不同的集合,每一个集合有多少人.一定要不要忘记了与别的没有联系的独立点. 并查集的时候能够通过hash处理出来每一个数目同样的集合的个数. 这样以人数为权值.个数为限制进行 ...

  7. JAVA设计模式之【桥接模式】

    桥接模式 蜡笔中颜色和型号之间存在耦合 毛笔中,颜色和型号解耦了 如果软件系统中某个类存在两个独立变化的维度,桥接模式可以将两个维度分离出来 角色 抽象类 扩充抽象类 实现类接口 提供基本操作 抽象类 ...

  8. 4.git "Could not read from remote repository.Please make sure you have the correct access rights."解决方案

    转自:https://zhiku8.com/git-could-not-read-from-remote-repository.html 我们在使用git clone 或其他命令的时候,有时候会遇到这 ...

  9. Codeforces 677D Vanya and Treasure 暴力+BFS

    链接 Codeforces 677D Vanya and Treasure 题意 n*m中有p个type,经过了任意一个 type=i 的各自才能打开 type=i+1 的钥匙,最初有type=1的钥 ...

  10. Kali linux 2016.2(Rolling)中的Exploits模块详解

    简单来将,这个Exploits模块,就是针对不同的已知漏洞的利用程序. root@kali:~# msfconsole Unable to handle kernel NULL pointer der ...