三层实例:登录过程

关于三层,看完一遍,想着开始敲七层,看着别人的代码敲都有点找不到,于是重新敲了一遍三层,收获很多!
首先,它没有模板,也不是一下子就完成的,它是有思路的,根据思路走,整个过程就是很自然而然的过程!
这里写图片描述

DAL

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace Login.DAL
{
    public class UserDAO//和用户数据库做对比
    {
        public Login.Model.UserInfo  SelectUser(string userName,string password)//告诉用户存在不存在,存在就返回,不存在就抛出异常
        {
            //用到数据模型
            using (SqlConnection conn = new SqlConnection(DBUtil.ConnString))
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = @"SELECT ID ,Password,Email from Users 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();

                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.Email = reader.GetString(3);
                    }
                }
                return user;

            }
                //throw new NotImplementedException();//在无法实现请求的操作和方法时的操作
        }
    }
}

BLL

UserDAO

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Login.BLL
{
    public class LoginManager
    {
        public Login.Model.UserInfo  Login(string userName,string password)
        {

            Login.DAL.UserDAO uDAO = new DAL.UserDAO();
            Login.Model.UserInfo user = uDAO.SelectUser(userName, password);

            if(user!=null)
            {
                Login.DAL.ScoreDAO sDAO = new Login.DAL.ScoreDAO();
                sDAO.UpdateScore(userName, 10);
                return user;
            }
            else
            {
                throw new Exception("登录失败");
            }

        }
    }
}

ScoreDAO

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace Login.DAL //data access level      DAO data access Object
{
    public class ScoreDAO//登录积分处理
    {
        public void UpdateScore(string userName,int value)
        {
            using (SqlConnection conn = new SqlConnection(DBUtil.ConnString))
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = @"INSERT INTO SCORES(UserName,Score) Value(@UserName,@Score)";
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.Add(new SqlParameter("@UserName", userName));
                cmd.Parameters.Add(new SqlParameter("@Score", value));
                conn.Open();
                cmd.ExecuteNonQuery();



            }
        }
    }
}

DBUtil

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Login.DAL
{
    class DBUtil
    {
        public static string ConnString = @"Server=Rancho; Database=Login; Uid=sa; Password=123456 ";
    }
}

Model

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Login.Model
{
    public class UserInfo
    {
        private int iD;
        private string userName;
        private string password;
        private string email;

        public int ID { get => iD; set => iD = value; }
        public string UserName { get => userName; set => userName = value; }
        public string Password { get => password; set => password = value; }
        public string Email { get => email; set => email = value; }

    }
}

UI层

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace LoginUI
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void butLogin_Click(object sender, EventArgs e)
        {
            //IDbConnection conn = new SqlConnection("....");
            //IDbCommand cmd = conn.CreateCommand();
            //cmd.CommandText = "Select UserName From UserTable where";
            //cmd.ExecuteReader();

            string userName = txtUserName.Text.Trim();
            string password = txtPassWord.Text;
            Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();
            Login.Model .UserInfo user=mgr.Login(userName ,password );

            MessageBox.Show("登录用户:" + userName);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/zhaofen_7/article/details/81746162