【C#】七层登录代码片总结

在我的上片文章中给大家简单讲解了下七层的概念性知识,现在来具体看看实在实现的!

B层

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Factory;
using IDAL;
using System.Data;
namespace BLL
{
   public class LoginBLL
    {
       public bool UserBLL(Entity.UserInfo UserInfo)
       {
           Factory.LoginFactory fact = new Factory.LoginFactory();//工厂实例化
           IDAL.LoginIDAL idal = fact.CreateUser();//调用工厂方法创建接口
           DataTable table = idal.selectUser(UserInfo);

           Boolean falg;
           if (table.Rows.Count == 0)
           {
               falg = false;
           }
           else
           {
               falg = true;
           }
           return falg  ;
       }
    }
}

D

public  class LoginDAL :IDAL.LoginIDAL
    {
      public DataTable selectUser(Entity.UserInfo UserInfo)
      {

          sqlHelper sqlhelper = new sqlHelper(); 
          SqlParameter[] sqlParams = 
          {new SqlParameter("@UserName" , UserInfo.UserName) , 
           new SqlParameter("@PassWord" , UserInfo.PassWord)};
          string sql = @"SELECT * FROM USERS WHERE UserName = @UserName and PassWord = @PassWord ";
          DataTable table = sqlhelper.ExecuteQuery(sql,sqlParams,CommandType.Text );
          return table;
      }
    }

sqlHelper

public class sqlHelper
    {
     private SqlConnection conn = null;  
        private SqlCommand cmd = null;  
        private SqlDataReader sdr = null; 

        public sqlHelper()  
        {  
            string connStr = ConfigurationManager.AppSettings["connStr"];  
            conn = new SqlConnection(connStr);  
        }  

        private SqlConnection GetConn()  
        {  
            if (conn.State == ConnectionState.Closed)  
            {  
                conn.Open();  
            }  
            return conn;  
        }  


        /// <summary>  
        /// 执行不带参数的的增删改SQL语句或者存储过程  
        /// </summary>  
        /// <param name="cmdText">增删改查SQL</param>  
        /// <param name="ct">命令类型</param>  
        /// <returns>返回受影响的行数</returns>  
        public int ExecuteNonQuery(string cmdText,CommandType ct)  
        {  
            int res;  
            try  
            {  
                cmd = new SqlCommand(cmdText, GetConn());  
                cmd.CommandType = ct;  
                res = cmd.ExecuteNonQuery();  
            }  
            catch (Exception ex)  
            {  

                throw ex;  
            }  
            finally  
            {  
                if (conn.State==ConnectionState.Open)  
                {  
                    conn.Close();  
                }  

            }  
            return res;  
         }  

        /// <summary>  
        /// 执行带参数的的增删改SQL语句或者存储过  
        /// </summary>  
        /// <param name="cmdText">增删改查SQL</param>  
        /// <param name="paras">要查询的参数</param>  
        /// <param name="ct">命令类型</param>  
        /// <returns>返回受影响的行数</returns>  
        public int ExecuteNonQuery(string cmdText, SqlParameter[] paras, CommandType ct)  
        {  
            int res;  
            using (cmd=new SqlCommand(cmdText,GetConn()))  
            {  
               cmd.CommandType = ct;  
               cmd.Parameters.AddRange(paras);  
                 res = cmd.ExecuteNonQuery();  
            }  
            return res;  
        }  
         /// <summary>  
        ///  执行不带参数的查询SQL语句或存储过程  
        /// </summary>  
        /// <param name="cmdText">查询SQL语句或存储过程</param>  
        /// <param name="ct">命令类型</param>  
        /// <returns></returns>  
        public DataTable ExecuteQuery(string cmdText, CommandType ct)  
        {  
            DataTable dt = new DataTable();  
            cmd = new SqlCommand(cmdText, GetConn());  
            cmd.CommandType = ct;  
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))  
            {  
                dt.Load(sdr);  
            }  
            return dt;  
        }  


        /// <summary>  
        /// 执行带参数的查询SQL语句或存储过程  
        /// </summary>  
        /// <param name="cmdText">查询SQL语句或存储过程</param>  
        /// <param name="paras">参数集合</param>  
        /// <param name="ct">命令类型</param>  
        /// <returns></returns>  
        public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)  
        {  
            DataTable dt = new DataTable();  
            cmd = new SqlCommand(cmdText, GetConn());  

            cmd.CommandType = ct;   
            cmd.Parameters.AddRange(paras);  
            using (sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection))  
            {  
                dt.Load(sdr);  
            }  
            return dt;  
        }  
    }  

实体层(Entity)存放全局的实体类,方便各个层之前的参数调用。代码就不都写了!
Facade

public  class LoginFacade
    {
      public Boolean SelectUser(Entity.UserInfo UserInfo)
      {
          bool flag;
          BLL.LoginBLL userBLL = new BLL.LoginBLL();
          flag = userBLL.UserBLL(UserInfo);
          return flag;
      }
    }

Factory

public  class LoginFactory
    {
        //string AssemblyName = "DAL";
        //数据程序集名称,命名空间(DAL)    
        string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];
        //接受来自配置文件的数据      
        public IDAL.LoginIDAL CreateUser()                                              
        {
            string className = StrDB + "." + "LoginDAL";//DAL层的类名     

            return (IDAL.LoginIDAL)Assembly.Load(StrDB).CreateInstance(className);//反射加工厂的应用
        }
    }

IDAL (接口)

  DataTable selectUser(Entity.UserInfo UserInfo);

UI(主界面登录)

private void btnOK_Click(object sender, EventArgs e)
        {
            string UserName = txtUserName.Text.Trim();
            string PassWord = txtPassWord.Text;

            //账户、密码验证
            if (txtUserName.Text == string.Empty)
            {
                MessageBox.Show("请输入账户!", "登录");
                return;
            }
            else
            {
                if (txtPassWord.Text == string.Empty)
                {
                    MessageBox.Show("请输入密码", "登录");
                }

                //登录
                //try
                //{
                    //实例化外观层
                    Facade.LoginFacade fLogin = new Facade.LoginFacade();
                    Entity.UserInfo user = new Entity.UserInfo();

                    user.UserName = Convert.ToString(txtUserName.Text.Trim());
                    user.PassWord = Convert.ToString(txtPassWord.Text);


                    Boolean falg = false;
                    falg = fLogin.SelectUser(user);

                    if (falg != false)
                    {
                        MessageBox.Show("登录成功" + txtUserName.Text);
                    }
                    else
                    {
                        MessageBox.Show("登录失败QAQ" + txtUserName.Text);
                    }
            }
        }

代码部分到这里就整理完了,希望对大家会有所帮助!!!!!

猜你喜欢

转载自blog.csdn.net/qq_31868147/article/details/80416299