三层架构下实现用户登陆C#
上篇文章讲到三层。接下来就通过一个实例详细的看怎么用三层实现用户登陆界面。
一、Model实体(LoginModel):
namespace LoginModel
{
//加入类:UserInfo Model实体作用:封装数据,使数据在三层中传输 。更倾向于业务逻辑层
public class UserInfo
{
//定义用户属性
public int ID { get; set; }
public string UserName { get; set; }
public string Password { get; set; } }
}
二、UI层的设计:
首先简单的界面相信大家都会:
接下来是代码:
namespace LoginUI
{
public partial class frmLogin : Form
{
public frmLogin()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
//UI层将用户输入数据传递给BLL层
string userName = txtUserName.Text.Trim();
string password = txtPassword.Text;
LoginBLL.LoginManager mgr = new LoginBLL.LoginManager();
LoginModel.UserInfo user = mgr.UserLogin(userName, password); //将UI层返回业务层传递的数据给用户
MessageBox.Show("登陆用户:" + user.UserName);
}
}
}
三、BLL层代码
namespace LoginBLL
{
public class LoginManager
{
public LoginModel.UserInfo UserLogin(string userName, string password)
{
LoginDAL.UserDAO uDao = new LoginDAL.UserDAO();//实例化DAL层
LoginModel.UserInfo user = uDao.SelectUser(userName, password); //不需訪问数据源直接运行业务逻辑
if (user != null)
{
return user;
}
else
{
throw new Exception("登陆失败");
}
}
}
}
四、DAL层 代码
public class UserDAO
{
public LoginModel.UserInfo SelectUser(string userName, string Password)
{ //建立数据库连接
string ConnString = @"Server=192.168.24.154;DataBase=机房收费系统人员记录; User ID=sa; Password=123";
using (SqlConnection conn = new SqlConnection(ConnString))
{
//运行SQL语句进行查询
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = @"SELECT ID,UserName,Password FROM UserInfo 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(); LoginModel.UserInfo user = null; //读取详细的数据
while (reader.Read())
{
if (user == null)
{
user = new LoginModel.UserInfo();
}
//读取查询到的数据
user.ID = reader.GetInt32(0);
user.UserName = reader.GetString(1);
user.Password = reader.GetString(2); }
return user;
}
}
}
}
登陆:
结果显示:
三层架构下实现用户登陆C#的更多相关文章
- MVC项目实践,在三层架构下实现SportsStore-08,部署到IIS服务器
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore,从类图看三层架构
在"MVC项目实践,在三层架构下实现SportsStore-02,DbSession层.BLL层"一文的评论中,博友浪花一朵朵建议用类图来理解本项目的三层架构.于是就有了本篇: I ...
- MVC项目实践,在三层架构下实现SportsStore-02,DbSession层、BLL层
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore-01,EF Code First建模、DAL层等
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore-03,Ninject控制器工厂等
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore-04,实现分页
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore-05,实现导航
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore-06,实现购物车
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore-07,实现订单提交
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
随机推荐
- PHP操作Redis常用
一.Redis连接与认证 //连接参数:ip.端口.连接超时时间,连接成功返回true,否则返回false $ret = $redis->connect('127.0.0.1', 6379, 3 ...
- IDEA / WebStorm / PhpStorm 添加jQuery自动提示,自动补全,提醒文档
应该是JetBrains系列IDE通用的方法,网上其他一些方法有的过时了,有的不全 默认情况下没有JQuery补全,按照以下方法添加 1. 打开Settings,Languages & Fra ...
- nginx log 错误502 upstream sent too big header while reading response header from upstream
cookies的值超出了范围我是说 看看了一下日志 错误502 upstream sent too big header while reading response header from upst ...
- SSL证书链说明
SSL证书链说明 1. SSL证书链定义 证书颁发机构(CA)共分为两种类型:根CA和中间CA.为了使SSL证书被信任,该证书必须由设备所连接的可信存储库CA颁发. 如果该证书不是由受信任CA,该链接 ...
- linux 时间戳
一.https://www.cnblogs.com/33debug/p/6632172.html 二.显示前一小时时间 date -d '-1 hour' '+%F-%H-%M-%S'
- 1044-Access denied for user 'root'@'%' to database 'lc_db'
远程登录Linux中的MySQL时,如果直接在工具中创建数据库时,有可能出现下面图中这样的错误: 这种错误是在远程登录时造成的,如果直接在Linux中本地操作没有问题(在Linux中的MySQL下,通 ...
- cygwin安装sshd服务并实现无密码登录
http://blog.csdn.net/cybercode/article/details/7080743 这篇文章主要是为我在win7(64位)下搭建hadoop环境所准备的.首先参照在cygwi ...
- 利用 gdb 探究main(int argc, char *argv[]){} 中的char *argv[]
在 Linux 系统中编写小程序 代码如下 编译并采用gdb调试 在调试之前设置三个参数 a bb ccc 输入 start 执行代码到 return 0; 从这里可以看到 argc = ...
- 对怎样充分利用安卓官方开发网站的一个简单性介绍介绍-https://developer.android.google.cn/docs/
一,谷歌的安卓官方网站-https://developer.android.google.cn/docs/ ,在网站里面可以查询开发文档,开发指导,设计原则,制作app的例子等等,无论对于新手还是老手 ...
- linux学习笔记-2.常用命令
说明:安装linux时,创建一个luao用户,然后使用root用户登陆系统 1.进入到用户根目录 cd ~ 或 cd cd / 返回到根目录 2.查看当前所在目录 pwd 3.进入到luao用户根目录 ...