zoukankan      html  css  js  c++  java
  • 三层架构之简单用户登录

    业务逻辑是简单的登录,如果登录成功,增加10点积分
    1.创建一个解决方案取名为:LoginSolution
    2.创建项目名为:LoginBLL(业务逻辑层),LoginDAL(数据访问层),LoginUI(表示层),LoginModel(数据模型)

     3.创建数据库Login,创建表:user(用户表) 

    Scores(积分表)

    4.数据访问层
    UserDAO类: 根据用户名和密码,如果数据库中有,将返回用户模型

    代码
    1 using System;
    2  using System.Collections.Generic;
    3  using System.Linq;
    4  using System.Text;
    5  using System.Data;
    6  using System.Data.SqlClient;
    7  namespace Login.DAL
    8 {
    9 public class UserDAO
    10 {
    11 public Login.Model.UserInfo SelectUser(string userName, string passWord)
    12 {
    13 using (SqlConnection con = new SqlConnection(DAL.DbUtil.ConnString))
    14 {
    15 SqlCommand cmd =con.CreateCommand();
    16 cmd.CommandText = @"select * from [user] where UserName=@userName and Password=@passWord";
    17 cmd.CommandType = CommandType.Text;
    18 cmd.Parameters.Add(new SqlParameter("@userName",userName));
    19 cmd.Parameters.Add(new SqlParameter("@passWord",passWord));
    20
    21 con.Open();
    22 SqlDataReader reader= cmd.ExecuteReader();
    23 Login.Model.UserInfo user = null;
    24 while(reader.Read())
    25 {
    26 if (user == null)
    27 {
    28 user = new Model.UserInfo();
    29 }
    30 user.ID = reader.GetInt32(0);
    31 user.UserName = reader.GetString(1);
    32 user.Password = reader.GetString(2);
    33 if(!reader.IsDBNull(3))
    34 user.Email = reader.GetString(3);
    35
    36 }
    37 return user;
    38 }
    39
    40 }
    41 }
    42 }

    ScoreDAO类:如果登陆成功,将积分加10

    代码
    1 using System;
    2  using System.Collections.Generic;
    3  using System.Linq;
    4  using System.Text;
    5  using System.Data;
    6  using System.Data.SqlClient;
    7
    8  namespace Login.DAL
    9 {
    10 public class ScoreDAO
    11 {
    12 public void UpdateScore(string userName, int value)
    13 {
    14 using (SqlConnection conn = new SqlConnection(DAL.DbUtil.ConnString))
    15 {
    16 SqlCommand cmd =conn.CreateCommand();
    17 cmd.CommandText = @"insert into Scores(UserName,Score)Values(@userName,@value) ";
    18 cmd.CommandType = CommandType.Text;
    19 cmd.Parameters.Add(new SqlParameter("@userName",userName));
    20 cmd.Parameters.Add(new SqlParameter("@value",value));
    21 conn.Open();
    22 cmd.ExecuteNonQuery();
    23
    24 }
    25 }
    26 }
    27 }
    28  

    DbUtil类:返回连接字符串

    代码
    1 using System;
    2  using System.Collections.Generic;
    3  using System.Linq;
    4  using System.Text;
    5
    6  namespace Login.DAL
    7 {
    8 public class DbUtil
    9 {
    10 public static string ConnString = @"Data Source=admin-PC\SQLEXPRESS;Initial Catalog=Login;Integrated Security=True";
    11 }
    12 }
    13  

    5.业务逻辑层
    LoginMange类:表示层传递用户名和密码,如果数据库中有,将积分叫10

    代码
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    4 using System.Text;
    5
    6 namespace Login.BLL
    7 {
    8 public class LoginManger
    9 {
    10
    11
    12 public Model.UserInfo UserLogin(string username,string password)
    13 {
    14 DAL.UserDAO uDao = new DAL.UserDAO();
    15 Login.Model.UserInfo user=uDao.SelectUser(username,password);
    16 if (user != null)//login sucessfully.
    17 {
    18 DAL.ScoreDAO sDao = new DAL.ScoreDAO();
    19 sDao.UpdateScore(username,10);
    20 return user;
    21 }
    22 else
    23 {
    24 throw new Exception("登录失败!");
    25 }
    26
    27 }
    28
    29
    30 }
    31 }

    为什么要数据模型?
    因为函数UserLogin只能返回用户名(string),或密码,但是要想要整个用户信息,可以用用户模型
    6.数据模型
    UserInfo类:提供用户基本信息:如ID,username 等

    代码
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    4 using System.Text;
    5
    6 namespace Login.Model
    7 {
    8 public class UserInfo
    9 {
    10 public int ID { get; set; }
    11 public string UserName { get; set; }
    12 public string Password { get; set; }
    13 public string Email { get; set; }
    14 }
    15 }
    16

    7.表示层

    代码
    1 private void btnLogin_Click(object sender, EventArgs e)
    2 {
    3
    4 string username = txtusername.Text.Trim();
    5 string password = txtpassword.Text;
    6 Login.BLL.LoginManger mgr = new Login.BLL.LoginManger();
    7 Login.Model.UserInfo user=mgr.UserLogin(username,password);
    8 MessageBox.Show("登录用户"+user.UserName);
    9 }


    作者:古梅飞动
    公司:蜜团科技
    出处:http://www.mitsofts.com/index.php
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    malloc/free和new/delete的区别
    Vim Skills——Windows利用Vundle和Github进行Vim配置和插件的同步
    selenium自学笔记---ecshop购买脚本 xpath定位元素(下拉框,单选框)
    python基础09--闭包,装饰器
    python基础08--迭代器,生成器
    python基础07--函数
    python基础06--文件操作
    python基础05--深浅copy, set,bytes
    python基础04--list,cou,dict
    python基础03--int,bool,str
  • 原文地址:https://www.cnblogs.com/luhuan860/p/1752779.html
Copyright © 2011-2022 走看看